这两种方式中哪一种更快,为什么?
window.setTimeout("func()", 100);
Run Code Online (Sandbox Code Playgroud)
要么
window.setTimeout(function(){func();}, 100);
Run Code Online (Sandbox Code Playgroud)
我猜的第二个方法是比约翰Resig的其他没有其他原因,更快,如果所有的忍者们使用它,我猜,因为它已经被解析,而不是它必须创建一个新的解析"的thingie第一种方式".我依稀记得这是人们不喜欢eval()的原因之一.
同时我在这里,在第二个代码snipplet中,是第一个在这种情况下被认为是良好做法的分号?
如果我没有弄错,eval会在给定的字符串中执行有效的代码
eval("alert('hey')");
Run Code Online (Sandbox Code Playgroud)
和
setTimeout("alert('hey')",1000);
Run Code Online (Sandbox Code Playgroud)
做同样的事情,只有一个计时器.设置超时和eval一样有风险吗?
我知道,eval并且setTimeout都可以接受字符串作为(第一)参数,我知道我最好不要使用它.我只是好奇为什么会有区别:
!function() {
var foo = 123;
eval("alert(foo)");
}();
!function() {
var foo = 123;
setTimeout("alert(foo)", 0);
}();
Run Code Online (Sandbox Code Playgroud)
第一个会起作用,第二个会产生错误: foo is not defined
他们如何在幕后执行?