先看下面兩段代碼
for (let i = 0; i < 5; i++) { setTimeout(function () { console.log(i) }, 2000) } for (var i = 0; i < 5; i++) { setTimeout(function () { console.log(i) }, 2000) }
一個是輸出0 1 2 3 4一個是輸出5個5 為什么let的i,在setTimeout里的匿名函數,i取的還是塊級作用域里的i?
一個假設是let的循環中,每次循環,js引擎讓i都變成了一個新變量的原因導致的。
