2016年6月1日 星期三

javascript let 和 var 的差別

1、scope的差別
在最外層宣告的時候,兩者都會是global scope,除此之外let範圍只在' { } ' block內部, 需要注意的是若是let使用為迴圈的遞增或遞減變數,每次執行迴圈的該變數都是獨立的scope,var 則是以function為層級

2、let不會hoist
var 的宣告會hoist,let不會


來看例子:

function test ( ) {
        //alert(y)可正常運作
        //alert(x)會出錯,x is not defined
        for(var i=0 ; i<2 ; i++ ) {
    
        //alert(y)可正常運作
        //alert(x)會出錯,x is not defined


        let x;
        var y;

        //alert(x)可正常運作
   }


}

迴圈的情況

for (let i = 1; i <6; i++) {
    setTimeout(function() {
        console.log(i)
    }, i * 1000)
}

每次的i都是獨立的

對照組

for (var i = 1; i <6; i++) {
    setTimeout(function() {
        console.log(i)
    }, i * 1000)
}

是同一個i

沒有留言:

張貼留言