簡體   English   中英

為什么var聲明快於讓

[英]why var declaration fast than let

 'use strict' function test() { let t = Date.now(); let p = 0; for (let i = 0; i < 100000000; i++) { p += i % 2; } console.log(p) console.log('test: ', Date.now() - t); } function test1() { var t = Date.now(); var p = 0; for (var i = 0; i < 100000000; i++) { p += i % 2; } console.log(p) console.log('test1 : ', Date.now() - t); } test(); test1(); 

在chrome中運行上面的代碼,為什么test1比測試快。 是'錯誤還是我的錯?

50000000
test:  1146

50000000
test1 :  148 

值得一提的是,在es6中,for循環中的let關鍵字被設計用於解決JavaScript中循環問題中臭名昭着的閉包

 var log = msg => div.innerHTML += msg + "<br>"; for (var i=0; i < 3; i++) { Promise.resolve().then(() => log(i)); // 3, 3, 3 } for (let i=0; i < 3; i++) { Promise.resolve().then(() => log(i)); // 0, 1, 2 } 
 <div id="div"></div> 

正如@loganfsmyth在注釋中提到的那樣,它通過為循環的每次迭代有效地創建一個新閉包來實現這一點。

這個以及該功能是新功能的事實可能會導致Chrome中出現的部分性能差異。 也就是說,Firefox的特定示例似乎沒有區別,因此瀏覽器似乎可以對此進行優化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM