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

哔哔one
TA贡献1854条经验 获得超8个赞
你总是可以通过访问全局变量作为窗口对象的属性来window.globalVar
使用全局变量(虽然使用全局变量确实不是一个好习惯),所以不,我认为没有充分的理由使用不推荐的语法。
它可能是出于历史原因而允许的:正如Felix Kling所提到的,原始语法只允许传递一串代码:
推出了JavaScript 1.0,Netscape 2.0。使用JavaScript 1.2,Netscape 4.0引入了传递Function对象的引用 ; 自5.0版以来由MSHTML DOM支持。[ 来源,我的重点]
如果浏览器不支持使用字符串作为第一个参数setTimeout
和setInterval
了,会有很多的代码无法再发挥作用了互联网上。
添加回答
举报
0/150
提交
取消