setTimeout()接收两个参数,第一个参数为执行的回调,第二个参数是延时的时间。
第一个参数可以为字符串。
setTimeout("alert(1)",1000);
setTimeout(function(){alert(1)},1000);
这两个都会在1秒后弹框,在《Javascript高级程序设计第三版》中明确指出第一种方式可能会导致性能缺失。但是为什么会性能缺失却没有详细阐述,这里我想问的就是第一个参数传递字符串为什么会导致性能缺失?导致的是什么性能缺失?
setTimeout()接收两个参数,第一个参数为执行的回调,第二个参数是延时的时间。
第一个参数可以为字符串。
setTimeout("alert(1)",1000);
setTimeout(function(){alert(1)},1000);
这两个都会在1秒后弹框,在《Javascript高级程序设计第三版》中明确指出第一种方式可能会导致性能缺失。但是为什么会性能缺失却没有详细阐述,这里我想问的就是第一个参数传递字符串为什么会导致性能缺失?导致的是什么性能缺失?
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
实质上如果第一个参数填写字符串的话是调用了eval()方法,以下是MDN对性能损失的解释:
大致解释以下,就是每一次运行这段代码都会重新调用JS解释器,重新进行解释运行,而优化步骤比如V8引擎中JIT(Just In Time)优化方法会失效。