Javascript模拟块级作用域
作者:邹阳 | 发表于:2016-04-12 15:05:09
阅读量:(315) | 所属栏目:编程
js没有块级作用域的概念,所以:
if(){} for(){} 等等 都是没有作用域的,也就是说 这些语句里面声明的变量属于全局变量,一定注意。
如何模拟:
要避免这种情况的,可以模仿块级作用域,如下:匿名函数自执行
(function(){
//这里是块级作用域
})()
这种模仿块级作用域的方法声明的匿名函数里的任何变量,都会在执行结束时被销毁。
补充1:
匿名函数自执行,如果不写第一个括号,写一个位运算符也是可以的,例如~ ! +
!function(){
//这里是块级作用域
}()
补充2:模仿块级作用域还可用于 闭包占用内存的问题,给那个函数模拟块级作用域,这样只要函数执行完毕,就可以立即销毁其作用域链了。
补充3:函数的自我执行,传参如何传:(function (age){ alert(age)} )(100); //100就可以通过参数传递进age
if(){} for(){} 等等 都是没有作用域的,也就是说 这些语句里面声明的变量属于全局变量,一定注意。
如何模拟:
要避免这种情况的,可以模仿块级作用域,如下:匿名函数自执行
(function(){
//这里是块级作用域
})()
这种模仿块级作用域的方法声明的匿名函数里的任何变量,都会在执行结束时被销毁。
补充1:
匿名函数自执行,如果不写第一个括号,写一个位运算符也是可以的,例如~ ! +
!function(){
//这里是块级作用域
}()
补充2:模仿块级作用域还可用于 闭包占用内存的问题,给那个函数模拟块级作用域,这样只要函数执行完毕,就可以立即销毁其作用域链了。
补充3:函数的自我执行,传参如何传:(function (age){ alert(age)} )(100); //100就可以通过参数传递进age