教育行業A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

let關鍵字聲明變量有哪些好處?

更新時間:2022年01月18日14時17分 來源:傳智教育 瀏覽次數:

let關鍵字

1. for循環索引值不會泄露

如果在for循環中使用let關鍵詞聲明變量,索引值只會在循環體內有效,循環結束后,索引值會被回收;

如果在for循環中使用var關鍵詞聲明變量,索引值在循環結束后,索引值仍然可以訪問,所以在for循環中使用let關鍵字聲明變量時最合適的。

如下面案例:

<script>
    for (var i = 0; i <= 10; i++) {

    }
    console.log(i);     // 輸出:11

    for(let j = 0; j <= 10; j++){

    }
    console.log(j);     // ReferenceError: j is not defined
</script>

let關鍵詞

運行結果


2. 可以避免變量提升導致變量覆蓋問題

<script>
    var name = 'zhang';
    function name_change() {
        console.log(name);      // undefined
        if(false){
            var name = 'wang';
        }
    }
    name_change();          // undefined
</script>

上面代碼中,使用var關鍵字定義了全局變量name,在name_change()函數中輸出變量name,但是var關鍵字存在變量提升,在if代碼塊內的變量name會提升至函數name_change()函數頂部,導致輸出的name覆蓋了外層的全局變量name,因此輸出“undefined”。

<script>
    var name = 'zhang';
    function name_change() {
        console.log(name);      // zhang
        if(false){
            let name = 'wang';
        }
    }
    name_change();              // zhang
</script>

如果使用let定義if代碼塊兒內的name,那么name變量只在if代碼塊塊內有效,不會影響到全局變量name,所以能夠輸出“zhang”。


3. 代替立即執行函數IIFE

立即執行函數(Immediately-Invoked Function Expression,簡稱IIFE)的內部是一個獨立的函數級作用域,使用IIFE的目的主要是避免污染當前作用域內的變量,而使用塊級作用域則可以直接避免這個問題。

// I IFE 寫法
(function () {
   var arg = ...;
    ...
}());


// 塊級作用域寫法
{
    let arg = ...;
    ...
}


猜你喜歡:

var、let、const聲明變量的區別

JS如何實現數組隨機排序?JS數組隨機排序的3種方法

JS編譯原理:Javascript代碼編譯步驟有哪些?

Javascript猜數游戲怎么實現?【含游戲源碼】

傳智教育web前端培訓課程

0 分享到:
红豆直播app黄台_红豆直播app下载免费_红豆直播app下载