函数表达式模仿块级作用域
2016-12-21 15:53
218 查看
一 块级作用域:javascript没有块级作用域
什么是块级作用域:举例说明function outPutNumber(count){ for(var i=0;i<count;i++){ alert(i); } alert(i); }这个个函数中定义了一个for循环,如果实在java,c 等有块级作用域的语言中当变量i出了这个循环,循环一旦结束变量i也就立马会被销毁内存被释放,但是javascript是没有块级作用域的,所以变量i是在outPutNumber()这个函数的活动对象中的,因此从他有定义开始在这个函数内部就死随时可以访问这个变量的。
function outPutNumber(count){ for(var i=0;i<count;i++){ alert(i); } var i;//var i=2; alert(i); } outPutNumber(5);
javascript从来不会告诉你是不是多是生命了同一个变量,遇到这情况,他就会对后面的声明视而不见(若初始化了就会继续执行)
匿名函数可以避免这个问题,
下面是避免这个问题的方法:
(function (){//这里是块级作用域})();
理解为什么这样做:
var someFunction=function(){//这里是块级作用域};//定义了一个匿名函数并将匿名函数赋予变量someFunction
soomeFunction();//调用匿名函数通过变量后面加()
那么以上代码就等于下面
function (){}();//但是这样会爆出错误,因为function关键字表示的是函数声明而函数声明后面不能跟()
(function (){//这里是块级作用域})()//将前面那个函数加上括号就表示是函数表达式,而函数表达式后面是可以跟()的
function outPutNumber(count){ (function(){ for(var i=0;i<count;i++){ alert(i); } })();//这样就创建了一个块级作用域当这个循环执行完毕里面的变量就会销毁外面的访问不到 alert(i);//这里现在会抛出一个错误,因为没有定义i } outPutNumber(5);
其实块级作用域就是运用了闭包函数,作用域链,作用域,变量对象
内部函数能访问外部函数的作用域,而外部函数则不能访问内部函数的作用域
相关文章推荐
- 函数表达式---模仿块级作用域
- 函数表达式-模仿块级作用域
- 函数表达式-模仿块级作用域
- JS之 函数模仿块级作用域,私有变量,模块模式
- 【JavaScript学习】函数表达式:模仿块级作用域
- 函数调用的几种方法 几种主流框架使用匿名函数模仿块级作用域的方式
- JavaScript高级程序设计之函数表达式之模仿块级作用域第7.3讲笔记
- javascript 模仿块级作用域
- Javascript中模仿块级作用域
- 函数声明与定义,作用域,函数声明与表达式的区别
- js 模仿块级作用域(私有作用域)、私有变量
- 高程 7.3 模仿块级作用域 7.4私有变量 7.5小结
- javascript 函数作用域 (VS Javascript 块级作用域)
- 模仿块级作用域
- 函数作用域和块级作用域?
- JavaScript匿名函数之模仿块级作用域
- 标识符的作用域--程序级>文件级>类级>函数级>块级
- javascript中不存在块级作用域,所以要小心使用在块级作用域中的函数声明所带来的作用域混乱.
- 模仿块级作用域
- JavaScript匿名函数之模仿块级作用域