【发布时间】:2011-08-30 04:59:24
【问题描述】:
我们都知道将字符串传递给setTimeout(或setInterval)是邪恶的,因为它在全局范围内运行,存在性能问题,如果您注入任何参数可能会不安全等等。所以绝对不推荐这样做:
setTimeout('doSomething(someVar)', 10000);
赞成这个:
setTimeout(function() {
doSomething(someVar);
}, 10000);
我的问题是:有没有理由做前者?它曾经更可取吗?如果不是,那为什么还要允许呢?
我想到的唯一方案是想要使用存在于全局范围内但已在本地范围内被覆盖的函数或变量。在我看来,这听起来像是糟糕的代码设计,但是......
【问题讨论】:
-
基于 MDC's documention 似乎传递字符串是一开始的唯一选择(至少在 Firefox 中)。我可以想象他们不会限制传递字符串以不制动兼容性......找不到太多其他为什么(还)。
-
@Felix:确实,我也在文档中寻找那部分。有趣的是,一个明显的拼写错误实际上使您的陈述更加有效(“刹车”应该是“休息”)。 ;-)
-
“如果不是,为什么还要允许?” - 这绝对不是 JavaScript 中唯一从不有用和邪恶但被允许的东西......
标签: javascript settimeout