在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ setTimeout的問題

setTimeout的問題

setTimeout()接收兩個參數(shù),第一個參數(shù)為執(zhí)行的回調(diào),第二個參數(shù)是延時的時間。
第一個參數(shù)可以為字符串。

setTimeout("alert(1)",1000);
setTimeout(function(){alert(1)},1000);

這兩個都會在1秒后彈框,在《Javascript高級程序設計第三版》中明確指出第一種方式可能會導致性能缺失。但是為什么會性能缺失卻沒有詳細闡述,這里我想問的就是第一個參數(shù)傳遞字符串為什么會導致性能缺失?導致的是什么性能缺失?

回答
編輯回答
好難瘦

字符串要轉(zhuǎn)換成可執(zhí)行的代碼 類似多走了一遍eval

2018年7月10日 14:19
編輯回答
不將就

實質(zhì)上如果第一個參數(shù)填寫字符串的話是調(diào)用了eval()方法,以下是MDN對性能損失的解釋:

eval() 通常比替代方法慢,因為它必須調(diào)用 JS 解釋器,而許多其他結(jié)構則由現(xiàn)代 JS 引擎進行優(yōu)化。

大致解釋以下,就是每一次運行這段代碼都會重新調(diào)用JS解釋器,重新進行解釋運行,而優(yōu)化步驟比如V8引擎中JIT(Just In Time)優(yōu)化方法會失效。

2018年6月9日 05:03