es6 新增了let命令,用來宣告變數。它的用法類似於var,但是所宣告的變數,只在let命令所在的**塊內有效。
for迴圈的計數器,就很合適使用let命令。
如果使用var的話,就會輸出10。for (let i = 0; i < 10; i++)
console.log(i);
// referenceerror: i is not defined
上面**正確執行,輸出了 3 次abc。這表明函式內部的變數i與迴圈變數i不在同乙個作用域,有各自單獨的作用域。for (let i = 0; i < 3; i++)
// abc
// abc
// abc
暫時性死區
只要塊級作用域內存在let命令,它所宣告的變數就「繫結」(binding)這個區域,不再受外部的影響。
es6 明確規定,如果區塊中存在let和const命令,這個區塊對這些命令宣告的變數,從一開始就形成了封閉作用域。凡是在宣告之前就使用這些變數,就會報錯。var tmp = 123;
if (true)
if (true)
es5 只有全域性作用域和函式作用域,沒有塊級作用域,這帶來很多不合理的場景。
console.log(insane); // 報錯
}}}};
var 與 let 的區別
var與let的區別是作用域不同,var作用域在最近的函式區塊內,let作用域在最近的封閉區塊內,比函式區塊要小。如果沒有在區塊內的話,二者都是全域性的。全域性的 在函式區塊之外使用的話,二者是等價的,都是全域性的。let me go globally scoped vari able global...
let與var的區別
let為es6新增的用來宣告變數的命令,用法類似與var,那麼let和var具體是怎麼個用法以及他們之間有什麼區別呢?一.let宣告的變數只在let 塊有效 console.log a 報錯,a is not defined console.log b 2複製 用let宣告了變數a,用var宣告了變...
let 與 var 的區別
let 與 var 的區別 a.let 不能重複宣告,但var可以 b.let會產生塊級作用域,且只在自己的作用域內生效,但var不受限制 c.變數提公升 console.log i undefined var i 10 console.log i 10 console.log i 報錯 let i...