js的es6中for迴圈中let和var區別

2021-10-09 05:04:39 字數 991 閱讀 8421

let和var區別:

1

for(var i=0;i<5;i++),100) 5}

6 console.log(i);//

57 console.log('**********===')89

for(let j=0;j<5;j++),100) 13}

14 console.log(j);//

報錯 j is not defined

為什麼 用let就可以顯示正確結果,而var就不可以呢?
var是全域性作用域,有變數提公升的作用,所以在for中定義乙個變數,全域性可以使用,迴圈中的每一次給變數i賦值都是給全域性變數i賦值。
let是塊級作用域,只能在**塊中起作用,在js中乙個{}中的語句我們也稱為叫乙個**塊,每次迴圈會產生乙個**塊,每個**塊中的都是乙個新的變數j;

es6中不是說let宣告變數不能重複宣告嗎?看下邊例子:

console.log(a);

//a is not defined;

console.log(b);

//2;

{}代表乙個塊,這個時候let宣告的變數只在這個塊中起作用,而這個塊對var宣告的變數不起作用。因為var是全域性作用域。

let a=1;

let a=2;

//uncaught syntaxerror: identifier 'a' has already been declared

//let不能重複宣告

let b=1;

var b=2;

//uncaught syntaxerror: identifier 'a' has already been declared

//let不能重複宣告

var c=3;

var c=4;

console.log(c)

//4;var可以重複宣告

ES6 迴圈中的塊級作用域

let 這是乙個我們常見的問題 var funcs for var i 0 i 3 i funcs 0 3 用立即函式 解決上述閉包問題 var funcs for var i 0 i 3 i i funcs 0 0在迴圈內部,立即執行函式為接受的每乙個變數 i 都建立乙個副本並儲存為變數value...

JS中的解構賦值(ES6)

解構賦值是對賦值運算子的擴充套件。解構賦值主要分為陣列的解構和物件的解構。1 陣列解構 按照順序解構,賦值給前面對應下標的變數 var a,b,c 1,2,3 console.log a,b,c 1,2,3 var a 3 var b 4 a,b b,a 冒泡 arr i arr i 1 arr i...

es6 巢狀陣列迴圈 ES6關於陣列迴圈的問題

res.data.list 的資料 是陣列裡套json的形式 我想把res.data.list 迴圈放到乙個陣列裡 因為要請求很多次資料,把每次返回的資料放在乙個陣列裡處理 但是輸出的陣列顯示的是這樣的 ob observer length 4 ob observer proto array typ...