Javascript模拟块级作用域

作者:邹阳 | 发表于:2016-04-12 15:05:09

阅读量:(246) | 所属栏目:编程

js没有块级作用域的概念,所以:
if(){}    for(){}  等等 都是没有作用域的,也就是说 这些语句里面声明的变量属于全局变量,一定注意。

如何模拟:
要避免这种情况的,可以模仿块级作用域,如下:匿名函数自执行
(function(){
//这里是块级作用域
})()

这种模仿块级作用域的方法声明的匿名函数里的任何变量,都会在执行结束时被销毁。

补充1:
匿名函数自执行,如果不写第一个括号,写一个位运算符也是可以的,例如~  !  +
!function(){
//这里是块级作用域
}()

补充2:模仿块级作用域还可用于 闭包占用内存的问题,给那个函数模拟块级作用域,这样只要函数执行完毕,就可以立即销毁其作用域链了。

补充3:函数的自我执行,传参如何传:(function (age){ alert(age)} )(100);   //100就可以通过参数传递进age
回复内容:(还能输入1000字)
验 证 码: