ES6中的關鍵字 - let


let關鍵字

  1.let關鍵字聲明的變量僅僅在自己的塊級作用域內起作用,出了塊級作用域就不起作用了;

var arr2 = [];

for (let index = 0; index < 10; index++) {
    arr2[index] = function () {
        console.log(index);
    }
}

arr2[6](); // 結果為:6

    此結果就是我們想要得到的結果;

    任何一對花括號“{ }”中的語句都屬於一個作用域塊,在花括號里面使用let定義的所有的變量在花括號外都是不起作用的,這就是我們所提及的塊級作用域。

  2.let關鍵字定義變量時,必須先聲明定義在使用,否則會報錯;

var b = 1;
(function(){
    alert(b);
    let b = 2;
})(); // 報錯

    此時程序會提示報錯,報錯的原因是b未定義;

  3.同一個塊級作用域內,不允許重復聲明同一個變量;

{
    var a1 = 1;
    let a1 = 2;        
}

{
   let a2 = 3;
   let a2 = 4;      
}

    兩種聲明變量的方式都會報錯,前者是因為a已經使用var關鍵字聲明定義過了,后者是因為是用let關鍵字重復聲明同一個變量;

  4.函數內也不能使用let關鍵字重新聲明函數的參數;

function demo(ts) {
    let ts = 'xk';
    alert(ts);
}    
demo(Hi); // 報錯

    報錯原因是因為使用了let關鍵字重新聲明了函數的參數ts

  5.使用var關鍵字聲明變量的時,會出現“變量提升”的現象;

//  例如:
var arrList = [];
for(var i = 0;i <= 10; i++){
    arrList[i]  = function() {
        console.log(i);  
    }  
}
arr[8]();   // 輸出結果為:10

var num = 1;
(function () {
    alert(a);  //  變量提升,相當於在彈出a之前,var a;  
    var num  = 2;
})();  //  輸出結果為:undefined  未定義

  總結:使用let關鍵字聲明的變量只在跨級作用域中起作用,比較適合for循環中,同時也不會出現變量提升的現象;同一個代碼塊內,不可以重復聲明相同的變量,也不可以重復聲明函數內的參數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM