ES6學(xué)習(xí)筆記1- let 和 const

閱讀《ES6標(biāo)準(zhǔn)入門》(第三版)? 阮一峰著 的筆記

Chapter2. let 和 const命令

目錄結(jié)構(gòu)? ? ? ? ? ? ?2.1 let命令

? ? ? ? ? ? ? ? ? ? ? ? ? ?2.2 塊級作用域

? ? ? ? ? ? ? ? ? ? ? ? ? ?2.3 const命令


2.1 let命令

2.1.1 基本用法

let所聲明的變量只在let命令所在的代碼塊中有用。

for循環(huán)中的計數(shù)器就很適合使用let:? ?for(let i=0; i<10; i++){ }? ?i只在for循環(huán)體中有用。

eg: 若使用var

? ? ? ?var a =[ ];

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

? ? ? ? ? ?a[i] = function () {

? ? ? ? ? ? ? ?console.log(i);

? ? ? ? ? ?};

? ? ? ?}

? ? ? ?a[6]();? ? ??//輸出10

解釋:

上述代碼中i是var聲明的,全局變量中有效,所以全局中只有1個i,被賦值給數(shù)組a的每一個log(i)中的i都指向同一個全局i,導(dǎo)致輸出的是運(yùn)行完最后一輪的i值(10)。

若使用let,則會輸出6。每輪循環(huán)的i都是一個新的變量。

2.1.2 不存在變量提升

var的變量提升現(xiàn)象:變量可以在聲明之前使用,值為undefined。

let不存在該現(xiàn)象:即變量必須在聲明之后使用,否則會報錯。

eg:

//使用var

console.log(a);? ? ?//輸出undefined

var a = 2;??

//使用let

console.log(b);? ? ?//輸出ReferenceError? , b是不存在的。

var b = 2;

2.1.3 暫時性死區(qū)

暫時性死區(qū)(TDZ): 代碼塊內(nèi),使用let命令聲明變量前,該變量都是不可用的。

if(true){? ? ? ? ? ? ? ? ? ?//TDZ開始

? ? tmp = 'abc';? ? ? ? ? ? //ReferenceError?

? ? console.log(tmp);? ?//ReferenceError

? ? let tmp;? ? ? ? ? ? ? ? ? ?//let聲明,TDZ結(jié)束

? ? console.log(tmp);? ?//undefined

? ? tmp = 123;? ? ? ? ? ? ?

? ? console.log(tmp);? ?//123

}

隱蔽的死區(qū):

function bar(x = y, y = 2) {

? ? ?return [x,y];

}

bar();? ?//報錯 x=y, 而y還未聲明,屬于死區(qū)

另外:

var x = x; //不報錯

let x = x; //報錯,也是TDZ

暫時性死區(qū)的本質(zhì)是:進(jìn)入當(dāng)前作用域,所要使用的變量已經(jīng)存在,但是不可獲取,只有等到聲明變量的那一行代碼出現(xiàn),才可以獲取和使用變量。

2.1.4 不允許重復(fù)聲明

let不允許在相同作用域內(nèi)重復(fù)聲明同一個變量。

eg1:?

function() {

? ? let a = 10;

? ? var a = 1;

}? ?//報錯

eg2:

function() {

? ? let a = 10;

? ? let a = 1;

}? ?//報錯

eg3:

function func(arg) {

? ? let arg; //報錯

}

eg4:?

function func(arg) {

? ? {

? ? ? ? let arg; //不報錯

? ? }

}




未完待續(xù)






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

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

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