塊級作用域
在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了。