解決for循環有時只輸出最後一個結果

我們平常用都是這樣的

for (var i = 0; i < 3; i++) {
       console.log(i)
   }

有時候打印i出來的是2,也有時候是按照順序打出來的,但是很不穩定。我們要操作就很麻煩,

for (let i = 0; i < 3; i++) {
       console.log(i)
   }

把var換成let就可以了,因爲let聲明的變量只在它所在的代碼塊有效,

var命令聲明的變量i,在全局範圍內都有效,所以全局只有一個變量i。每一次循環,變量i的值都會發生改變,而循環內被賦給數組a的函數內部的console.log(i),裏面的i指向的就是全局的i。也就是說,所有數組a的成員裏面的i,指向的都是同一個i,導致運行時輸出的是最後一輪的i的值,也就是 10。

如果使用let,聲明的變量僅在塊級作用域內有效,最後輸出的是 6。

想要具體瞭解可以看這裏面介紹 https://es6.ruanyifeng.com/#docs/let

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章