Es6中let與var區別

2021-10-02 07:47:14 字數 1082 閱讀 4247

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迴圈體內有效,在迴圈體外引用就會報錯。變數提公升現...