let - 學(xué)習(xí)筆記

一、let聲明的變量,僅在代碼塊內(nèi)有效

下述代碼中i為var聲明,為全局作用域

var a = [];
for (var i = 0; i<10; i++){
    a[i]=function(){
        console.log(i)
    }
}
a[5](); //10

下列代碼中l(wèi)et僅在塊狀作用域內(nèi)有效

var a = [];
for (let i = 0; i < 10; i ++){
    a[i] = function(){
        console.log(i)
    }
}

a[5](); //5

for循環(huán)還有一個(gè)特別之處,就是設(shè)置循環(huán)變量的那個(gè)部分是一個(gè)父級(jí)作用域,而循環(huán)體內(nèi)部是一個(gè)單獨(dú)的自作用域。

for (let i = 0; i < 3; i++){
    let i = 'abc';
    console.log(i);
}
// 輸出如下:
// abc
// abc
// abc

二、let聲明的變量,不存在變量提升

console.log(test); //undefined
var test = 1;

console.log(test1) // Uncaught ReferenceError: test1 is not defined
let test1 = 1; 

三、暫時(shí)性死區(qū)

只要塊級(jí)作用域內(nèi)存在let命令,他所生命的變量就“綁定”這個(gè)區(qū)域,不在受外部影響,不會(huì)再去尋找上一級(jí)作用域是否定義了該變量。以下代碼中,let命令聲明test3之前,都屬于變量test3 的死區(qū)。

if (true){
    //TDZ開(kāi)始
    test3 = 'abc'; // Uncaught ReferenceError: test3 is not defined
    console.log(test3);//Uncaught ReferenceError: test3 is not defined

    let test3; //TDZ結(jié)束
    console.log(test3); //undefined

    test3 = 123;
    console.log(123); //123
}

四、不允許重復(fù)聲明

let不允許在相同作用域內(nèi)聲明同一個(gè)變量

//報(bào)錯(cuò)
function abc() {
    let a = 10;
    var a = 1;
}

//報(bào)錯(cuò)
function abc() {
    let a = 10;
    let a = 1;
}

//報(bào)錯(cuò)
function abc(arg) {
    let arg;
    let a = 1;
}

//不報(bào)錯(cuò)
function abc(arg) {
    {
        let arg;
    }
    let a = 1;
}

五、let、const、class聲明的全局變量不再屬于頂層對(duì)象(window、global)屬性

let b = 1;
window.b //undefined;

本文內(nèi)容出自:《ES6標(biāo)準(zhǔn)入門(mén)》(阮一峰著)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文屬個(gè)人筆記,不做詳解,僅供參考! let命令 基本用法 ES6 新增了let命令,用來(lái)聲明變量。它的用法類(lèi)似于...
    R_yan閱讀 29,304評(píng)論 6 18
  • (一) 本節(jié)知識(shí)點(diǎn) let命令 塊級(jí)作用域 const命令 頂層對(duì)象的屬性 global對(duì)象 (二) LET知識(shí)點(diǎn)...
    我擁抱著我的未來(lái)閱讀 537評(píng)論 0 2
  • let 塊級(jí)作用域 let 語(yǔ)句聲明一個(gè)塊級(jí)作用域的變量。關(guān)于塊級(jí)作用域,可以簡(jiǎn)單地理解為表達(dá)式中 {} 內(nèi)的部分...
    極客傳閱讀 364評(píng)論 0 1
  • 接下來(lái)來(lái)介紹一下es6中的新特性之“l(fā)et”。首先,這個(gè)玩意兒其實(shí)和var這個(gè)命令類(lèi)似,都是用于聲明變量的,但是所...
    fangdown閱讀 253評(píng)論 0 0
  • 1.let (1)用于聲明變量。其用法類(lèi)似于var,但是所聲明的變量只在let命令所在的代碼塊內(nèi)有效。 最常見(jiàn)的就...
    肆意咯咯咯閱讀 539評(píng)論 0 2

友情鏈接更多精彩內(nèi)容