ES5实现ES6的let
2017-08-29 本文已影响766人
落花的季节
块级作用域
在javascript中只有全局作用域和函数作用域,并不存在块级作用域。这样,在使用时就会出现一些问题。 下面我们先来举例说明let块级作用域的使用。
{
var a = 1;
let b = 2;
}
console.log(a);
console.log(b);
我们得到的结果如下图所示:
也就是说,var声明的变量由于不存在块级作用域所以可以在全局环境中调用,而let声明的变量由于存在块级作用域所以不能在全局环境中调用。
由以上的分析可知,我们可以通过模拟块级作用域来实现let。
function outputNum(count){
//块级作用域
(function(){
for(var i = 0; i < count; i ++){
console.log(i)
}
})();
console.log(i)
}
outputNum(5)
Screenshot from 2017-08-22 14-24-29.png
我们可以看到通过使用立即执行函数,变量i只会在for循环的语句块中有定义,循环一旦结束,变量i就会被销毁,循环外面就访问不到变量i了。