为了账号安全,请及时绑定邮箱和手机立即绑定

是否有充分的理由将字符串传递给setTimeout?

是否有充分的理由将字符串传递给setTimeout?

斯蒂芬大帝 2019-07-27 14:05:38
是否有充分的理由将字符串传递给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支持。[ 来源,我的重点]

如果浏览器不支持使用字符串作为第一个参数setTimeoutsetInterval了,会有很多的代码无法再发挥作用了互联网上。


查看完整回答
反对 回复 2019-07-27
  • 2 回答
  • 0 关注
  • 329 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号