看板 Ajax 關於我們 聯絡資訊
{ console.time("loop"); for (var i = 0; i < 1000000; i += 1){ // Do nothing } console.timeEnd("loop"); } 在網路上看到 ( https://www.toptal.com/nodejs/interview-questions ) 說上面這段code node的執行速度會比chrome瀏覽器快 雖然都是用v8引擎 原因是 因為i是global,會被綁在window object上 然後會 repeatedly resolving the property i within the heavily populated window namespace in each iteration of the for loop. 上面這句英文理解不能 可以請大大開釋一下嗎? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 72.203.67.221 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1478935207.A.AE8.html
LPH66: 瀏覽器的全域變數都是屬於 window 這個物件 11/12 16:09
LPH66: 而 window 底下有超多東西, 在裡面找人找一百萬次很慢 11/12 16:09
LPH66: 但 node 的全域變數屬於 global 這物件 11/12 16:12
LPH66: 裡面東西沒有瀏覽器的 window 那麼多, 所以比較快 11/12 16:12
LPH66: 再者 node 直接宣告 var 宣告的是 module-local 變數 11/12 16:13
LPH66: 只屬於這個 module 所以又更沒有負擔 11/12 16:13
eight0: 有學到有推 試了一下,全域執行所需的時間是IFFE的4倍以上 11/12 16:30
illl: 喔喔了解感謝 11/12 16:41
youtuuube000: 實用推! 11/12 17:41
MangoTW: 要公平比的話,應該在 function scope 下 11/12 22:58
mrbigmouth: 實務上 不管browser還是node都不太會直接用廣域變數 11/13 18:13