使用“alert”和“confirm”作为变量名称

时间:2015-05-11 19:02:15

标签: javascript reserved-words

根据this MDN article以及我可以找到的任何其他来源,“alert”和“confirm”不是JavaScript中的保留字。为什么它们没有列在这里,它们是否可以安全地用作函数体内的变量名?

5 个答案:

答案 0 :(得分:5)

只要用var声明它们,就可以在函数体内使用它们。如果你没有用var声明它们,那么你会在全局(窗口)范围内覆盖它们,这可能会导致很多问题。

答案 1 :(得分:3)

它们未列出,因为它们不是保留字。

alertconfirmwindow对象上的函数,它是浏览器中的全局作用域。因为它是全局的,所以您可以将其属性称为裸字。

//Equivalent
window.alert('test');
alert('test');

您可以在函数内安全地使用它们。这样做会隐藏裸露使用,但您仍然可以致电window.alert()来访问它们。

答案 2 :(得分:1)

是的,它们不是保留字。

在ECMAScript 5中,reserved words是:

  • Keywordsbreakdoinstanceoftypeofcaseelsenewvarcatchfinallyreturnvoidcontinueforswitch,{ {1}},whiledebuggerfunctionthiswithdefaultif,{{1 },throwdelete
  • Future Reserved Wordsintryclassenumextendssuperconst 。并且,在严格模式下,exportimportimplementsletprivatepublicyield,{{ 1}},interface
  • Null Literalspackage
  • Boolean Literalsprotectedstatic

由于nulltrue是标识符名称而不是保留字,因此它们是标识符。因此,它们可以安全地用作变量名。

false

答案 3 :(得分:0)

你可以覆盖这些功能,没有什么能阻止你。

如果您有自定义对象或功能:

var obj = { alert: 1, confirm: 2};
function func(){
    var alert = 1;
    var prompt = 2;
}

这不是问题。

但是,如果覆盖窗口对象上的实际alertconfirm函数,如果包含依赖于该函数的库,则可能会遇到麻烦。

为了禁用恼人的alert()框,这可能很有用。

答案 4 :(得分:0)

它们不是保留字,因为它们是“全局”(“窗口”属性)函数。 为它们分配值将导致在相同范围内失去其功能,例如:

alert = "sdfsdf";
...
alert("something");

将导致错误,例如“TypeError:alert is not a function”。