let用法類似於var,但是所宣告的變數,只在let命令所在的**塊內有效。
for (let i = 0; i < 10; i++) //let與for完美搭配,只在迴圈體內有效
function f1()
console.log(n); // 5
}//外層**不受內層**的影響
例:
var
var a = ;
for (var i = 0; i < 10; i++) ;
}a[6](); // 10,所有陣列a的成員裡面的i,指向的都是同乙個i
let
var a = ;
for (let i = 0; i < 10; i++) ;
}a[6](); // 6 ,當前的i只在本輪迴圈有效,每一次迴圈的i其實都是乙個新的變數
注:for迴圈還有乙個特別之處,就是設定迴圈變數的那部分是乙個父作用域,而迴圈體內部是乙個單獨的子作用域。
for (let i = 0; i < 3; i++)
// abc
// abc
// abc
//表明函式內部的變數i與迴圈變數i不在同乙個作用域,有各自單獨的作用域
let變數必須在宣告後使用
var可以在變數前使用
在使用let命令宣告變數前,都是該變數的死區
function bar(x = y, y = 2)
bar(); // 報錯,引數x預設值等於另乙個引數y,而此時y還沒有宣告,屬於「死區」
function bar(x = 2, y = x)
bar(); // [2, 2],y的預設值是x,x已經宣告了
// 不報錯
var x = x;
// 報錯
let x = x;
let不允許在相同作用域內,重複宣告同乙個變數。 ES6中let與var的區別
for let i 0 i 10 i console.log i referenceerror i is not defined 計數器i只在for迴圈體內有效,在迴圈體外引用就會報錯。var 的情況 console.log foo 輸出undefined var foo 2 相當於 var foo...
ES6中let與var的區別
通過var定義的變數,作用域是整個封閉函式,是全域的 通過let定義的變數,作用域是在塊級或是子塊中。for let i 0 i 10 i console.log i referenceerror i is not defined 計數器i只在for迴圈體內有效,在迴圈體外引用就會報錯。變數提公升現...
ES6中let與var的區別
通過var定義的變數,作用域是整個封閉函式,是全域的 通過let定義的變數,作用域是在塊級或是子塊中。for let i 0 i 10 i console.log i referenceerror i is not defined 計數器i只在for迴圈體內有效,在迴圈體外引用就會報錯。變數提公升現...