項(xiàng)目中已經(jīng)頻繁使用let了神汹,面試中也會有同樣的問題,接下來看下let和var的區(qū)別吧:
{
var a = 1;
let b = 2;
}
console.log('var:', a); // 1
console.log('let:', b); // b is not defined
在這里插入圖片描述
由此得出:let只在所聲明的區(qū)域塊內(nèi)有效,平時在for循環(huán)中用處還是很大的
for (var i = 0; i < 5; i++) {
}
console.log(i); // 5
在這里插入圖片描述
為什么會得5呢?由于var聲明的變量是全局變量,在循環(huán)體外也可以被訪問匆帚,這時循環(huán)體外的i已經(jīng)得5了,結(jié)果如圖
注意:當(dāng)索引超過5時旁钧,會報錯
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一
接下來看下let
for (let j = 0; j < 5; j++) {
}
console.log(j); // j is not defined
在這里插入圖片描述
let聲明的變量只在本輪循環(huán)有效吸重,循環(huán)體外是不可以訪問該變量的。
號外:let聲明的變量不能在聲明之前調(diào)用歪今,而var聲明的變量可以使用,所以開發(fā)中盡量用let養(yǎng)成良好的習(xí)慣
console.log(a); //undefined
var a;
console.log(b); //b is not defined
let b;
多多學(xué)習(xí)~活到老學(xué)到老嚎幸!