ES5实现变量的块级作用域
众所周知,ES6新增了let关键字用来定义局部变量,它使得JS的变量有了块级作用域。块级作用域是指变量只在{}内有效。那么在ES6以前如何给变量实现块级作用域呢?答案就是使用立即执行匿名
众所周知,ES6新增了let关键字用来定义局部变量,它使得JS的变量有了块级作用域。
块级作用域是指变量只在{}内有效。
那么在ES6以前如何给变量实现块级作用域呢?答案就是使用立即执行匿名函数。
先看看没有块级作用域的情况:
function a(){
for(var i=0;i<3;i++){
}
console.log(i);
}
a();
上述例子中,将输出 i=3,因为i使用var声明,作用域是整个函数。
如果需要让变量i只在for循环中有效呢,我们可以这样实现:
即在for循环外面包裹一层匿名函数,在匿名函数外加圆括号表示立即执行。
function a(){
(function(){
for(var i=0;i<3;i++){
console.log(i);
}
})();
console.log(i); //输出undefined
}
a();
相关文章
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~