无块级作用域及如何模拟块级作用域
javascript是没有块级作用域的,如下可验证:
if(true){
var
name = "xiaofei";
} console.log(name);
//xiaofei for(var
i = 0; i < 10; i++){ //do something
} console.log(i);
//10 |
那如何模拟块级作用域呢?可以利用匿名函数来模拟块级作用域
(function(){
//此处定义的变量会在运行结束后被销毁
})();
//看一个例子:
function
fun(n){ (function(){
for(var
i = 0; i < n; i++){ //do something
}
})();
console.log(i);
//无法访问 发生错误 } |
解释:fun函数内部的匿名函数运行完毕后内部的变量立即被销毁了,所以在匿名函数外边访问不到i
还要注意的是在fun函数内部创建了一个匿名函数实质是创建了一个闭包,但是这个闭包没有付给其他变量,就没有存在引用,
所以在它执行完后立即被销毁
739

被折叠的 条评论
为什么被折叠?



