javascript - 值为 "Error"的字符串是否是某种保留字?

标签 javascript reserved-words

所以我的页面上有以下一行 Javascript:

form.display.value = 'Error';

其中显示是我页面上文本类型的输入:

<input type="text" id="calcDisplay" name="display" maxlength="25">

在 Chrome 中,这可以很好地使输入元素的值为“Error”。但在 IE 10 和 Firefox 中输入的内容如下:

function Error() {    [native code]}

谁能解释一下这里发生了什么以及为什么?

更新:这是正在调用的实际函数:

function compute(form) {
   try {
      form.display.value = eval(form.display.value);
   } catch(e) {
      form.display.value = 'Error';
   } 
}

这是它的视频,这样你们就不会认为我疯了:

http://screencast.com/t/sq9xXrnf

最佳答案

当值 Error 已在输入中时,此行:

form.display.value = eval(form.display.value);

...将评估您之前定义的函数Error。因此,这一定是在第二次调用您的 compute 函数时发生的。

请注意,浏览器与 eval 的工作方式不一致,这就是您看到浏览器差异的原因。

关于javascript - 值为 "Error"的字符串是否是某种保留字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18666315/

相关文章:

mysql - MySQL中使用保留字作为表名或列名导致的语法错误

C++ 使用 C 代码在定义和标识符中使用双下划线

java - 为什么 Java 不提示保留字 Float?

c++ - 保留的函数名可以重载吗?

javascript - 如何连接 2 个字符串中的参数名称?

javascript - FormData 不适用于 Firefox 上的 String

javascript - concatMap 可变数量的 promise 和管道结果作为下一个 promise 的参数

javascript - NodeJS Redis session 不会通过浏览器重定向持续存在

javascript - cucumber + Mongoose 给我架构尚未注册模型

javascript - x 是 Javascript FF/Safari 中的保留关键字而不是 IE 中的保留关键字吗?