【问题标题】:Is it bad practice to pass a string to settimeout? If yes, why? [duplicate]将字符串传递给 settimeout 是不好的做法吗?如果是,为什么? [复制]
【发布时间】:2011-06-03 20:53:48
【问题描述】:

可能重复:
Is there ever a good reason to pass a string to setTimeout?

我刚刚阅读了一条评论,指出这是不好的做法。是这样吗?为什么?

【问题讨论】:

  • 这是一种不好的做法,因为它使用隐含的eval(),这是一个安全风险。
  • 你在谈论我的评论吗? :)
  • 这是第 1 行错误的定时炸弹
  • @Chris: 是的 :) this one.. 抱歉重复:|
  • 问题是……这曾经是你的做法。 “回到过去”,你所能做的就是扔掉字符串并评估它们。随着语言的成熟,这种模式变得过时了。但是,与 Internet Explorer 浏览器的整个历史类似,以向后兼容和遗留支持的名义,事情一直模棱两可。所以,你仍然可以——但不应该。并且可能仍然有一些罕见的情况仍然有用。那个场合将如此罕见和复杂,以至于你和我可能不会认出它发生的场合——总是有另一种方式。 :)

标签: javascript settimeout


【解决方案1】:

是的。

字符串必须是eval'd,其中is evil(而且非常慢)。
它还会阻止您在回调中使用局部变量。

【讨论】:

  • '它还阻止你在回调中使用局部变量'你能详细说明一下吗?
  • 回调不能使用调用setTimeout的代码中的局部变量(与函数表达式不同)
【解决方案2】:

这是一种不好的做法,原因与使用 eval 不好的原因相同。您正在将字符串作为代码执行。这会带来性能和安全方面的损失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 2020-06-19
    • 2018-01-05
    • 2011-04-28
    • 2013-08-06
    • 1970-01-01
    • 2017-02-02
    相关资源
    最近更新 更多