我们都知道将字符串传递给setTimeout(或setInterval)是邪恶的,因为它在全局范围内运行,有性能问题,如果你注入任何参数等可能是不安全的.所以这样做肯定是不赞成的:
setTimeout('doSomething(someVar)', 10000);
Run Code Online (Sandbox Code Playgroud)
赞成这个:
setTimeout(function() {
doSomething(someVar);
}, 10000);
Run Code Online (Sandbox Code Playgroud)
我的问题是:有没有理由去做前者?它是有史以来最好?如果不是,为什么甚至允许?
我想到的唯一场景是想要使用存在于全局范围中但在本地范围内被覆盖的函数或变量.这听起来像是糟糕的代码设计,但是......