es6新增的let

最近出去觀望一下,發現很多人喜歡問es6,所以我決定定期寫一寫關於se6都有哪些好玩的東西,今天先說一下爛大街的let

個人感覺之所有有let還是因爲var有幾點不足之處:

首先是作用域的問題,其次是變量提升

  1. var arr = [ ];
    for(var i=0;  i<10;  i++){
        arr [i] = () => {
           console.log(i)
        }
    
    }
    arr[1]();


    先不說原因,繼續向下看:

    var arr = [ ];
    for(let i=0;  i<10;  i++){
        arr [i] = () => {
           console.log(i)
        }
    
    }
    arr[1]();


           這是因爲let聲明的變量僅僅在自己的塊級作用域起作用,出了這個塊級作用域就不起作用,如果用var聲明,就不是這種情況了,i 的值會影響到各個塊裏面的 i,等循環完後 i 等於10,所有塊的i都變成了10了

  2. 變量提升,我覺得沒啥可說的就不說了

還有幾點要注意的:
同一個塊級作用域內,不允許重複聲明同一個變量。

函數內不能用let重新聲明函數的參數

用let聲明變量只在塊級作用域起作用,適合在for循環使用(個人理解哈)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章