我们都知道将字符串传递给setTimeout
(or setInterval
) 是邪恶的,因为它在全局范围内运行,存在性能问题,如果您正在注入任何参数等,则可能不安全。因此,绝对不推荐这样做:
setTimeout('doSomething(someVar)', 10000);
赞成:
setTimeout(function() {
doSomething(someVar);
}, 10000);
我的问题是:有没有理由做前者?它曾经是可取的吗?如果不是,为什么它甚至被允许?
我想到的唯一场景是想要使用存在于全局作用域中但已在局部作用域中被覆盖的函数或变量。对我来说,这听起来像是糟糕的代码设计,但是......