块级作用域
在javascript中只有全局作用域和函数作用域,并不存在块级作用域。这样,在使用时就会出现一些问题。 下面我们先来举例说明let块级作用域的使用。
{
var a = 1;
let b = 2;
}
console.log(a);
console.log(b);
我们得到的结果如下图所示:
![](https://img.haomeiwen.com/i3145898/2e19e720b8a2cf7b.png)
也就是说,var声明的变量由于不存在块级作用域所以可以在全局环境中调用,而let声明的变量由于存在块级作用域所以不能在全局环境中调用。
由以上的分析可知,我们可以通过模拟块级作用域来实现let。
function outputNum(count){
//块级作用域
(function(){
for(var i = 0; i < count; i ++){
console.log(i)
}
})();
console.log(i)
}
outputNum(5)
![](https://img.haomeiwen.com/i3145898/58bf167153bf21ff.png)
我们可以看到通过使用立即执行函数,变量i只会在for循环的语句块中有定义,循环一旦结束,变量i就会被销毁,循环外面就访问不到变量i了。
网友评论