【问题标题】:JavaScript eval() and constJavaScript eval() 和 const
【发布时间】:2012-08-16 22:58:38
【问题描述】:

我在使用 Mozilla Rhino 作为 JavaScript 引擎时偶然发现了一个奇怪的 JavaScript 错误。

这一行脚本抛出错误:

eval("const a = 5;");

错误是:

TypeError: redeclaration of var a.

如果该行被执行多次,我预计会出现这个错误 - 但它只执行一次,因为这一行是整个程序。

谁能解释一下,为什么会出现这个错误?

【问题讨论】:

  • Odds 是您包含的其他脚本之一,已经声明了一个名为 a 的常量。尝试从头部一个一个地删除脚本(特别是第 3 方,如果你知道你没有),直到这个错误不出现
  • Rhino如何执行JS?
  • 我在 Eclipse 中执行了它 - 没有包含其他脚本。我怀疑这是 Rhino 中的一个错误,因为它适用于 Chrome。
  • @user1407611 尝试验证其用法.. if (typeof(a) == "undefined") {....}
  • 我无法在 Firefox 控制台中重现该错误。 eval("const a = 5; a"); 日志5.

标签: javascript constants eval redeclaration


【解决方案1】:

javascript 中没有 const 类型。您将不得不改用它

eval("var a = 5;");

【讨论】:

  • 是的,但它并不完全是标准的,您可以在您的页面中看到“const 的当前实现是 Mozilla 特定的扩展”。是的,它可以在 chrome 中使用,但是...
  • 没错 - 但是,如果我将它移出 eval(),它会起作用,我只是在 eval() 内失败
  • 然后尝试使用 var 类型而不是 const。也许 const 没有实现到核心。
  • @zon7 他是在 Rhino 中做的,这是 Mozilla 的 JS 引擎。他不是在寻找跨浏览器的解决方案,而是在寻找错误的解释。
猜你喜欢
  • 2012-03-05
  • 2016-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多