Javascript 是值为“的字符串”;“错误”;某种保留字?

Javascript 是值为“的字符串”;“错误”;某种保留字?,javascript,reserved-words,Javascript,Reserved Words,因此,我的页面上有一行Javascript: form.display.value = 'Error'; <input type="text" id="calcDisplay" name="display" maxlength="25"> 其中,display是我的页面上文本类型的输入: form.display.value = 'Error'; <input type="text" id="calcDisplay" name="display" maxlength="2

因此,我的页面上有一行Javascript:

form.display.value = 'Error';
<input type="text" id="calcDisplay" name="display" maxlength="25">
其中,display是我的页面上文本类型的输入:

form.display.value = 'Error';
<input type="text" id="calcDisplay" name="display" maxlength="25">
谁能解释一下这里发生了什么,为什么

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

function compute(form) {
   try {
      form.display.value = eval(form.display.value);
   } catch(e) {
      form.display.value = 'Error';
   } 
}
这是它的视频,所以你们不要认为我疯了:


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

form.display.value = eval(form.display.value);
…将对前面定义的函数
Error
求值。因此,这必须在第二次调用
compute
函数时发生


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

“值为“Error”的字符串在Javascript中是某种保留字吗?”,呃,不,绝对不是。这不是保留字的工作方式。字符串就是字符串,没有保留字符串。@Marko我不知道,我不能复制它,或者根据您给出的代码想象类似的东西。这里肯定还有其他因素在起作用,您发布的代码无法产生您描述的症状。
eval(form.display.value)
——这几乎肯定是WTF。你真的想让Joe Average在函数的上下文中执行随机代码吗?你怎么能省略
form.display.value=eval(form.display.value)这一行来自您的原始问题??这绝对是你错误的根源。如果你第一次发布这段代码,而不是从这样一行无害的代码中声称这种奇怪的行为,没有人会认为你是“疯子”。至少,你可以使用
新功能
(或间接
评估
),只隔离对全局范围可能造成的损害。或者,您可以使用web worker(像does一样)进一步隔离作用域。或者,您可以使用数学表达式解析库,而不存在执行任意代码的问题。抛开OP首先不应
eval
任意输入这一事实不谈,那么您对如何在不使用eval的情况下执行客户端计算器有何建议?在我的应用程序中使用eval有多危险,因为它的目的是一个简单的计算器?