不使用JavaScript标识符

Bri*_*don 9 javascript

我刚刚发现命名变量的难题很难arguments.

var arguments = 5;

(function () { 
    console.log(arguments); 
})();
Run Code Online (Sandbox Code Playgroud)

Output: []

事实证明,这arguments"所有函数中都可用的局部变量",因此在每个新的执行上下文中arguments都会被遮蔽.

我的问题是:还有其他任何这样的奸诈名称,例如arguments,不是真正的保留词,但会导致仍然存在问题吗?

eis*_*eis 8

是.喜欢window或者document,例如.在此处查看更长的列表("其他javascript关键字").

不建议使用它们中的任何一个,即使有些可以按预期工作.

编辑:如javascript.about.com中提到的那样,"虽然它们不是保留字,但应避免使用这些字作为变量和函数." 它们主要列出了分类为预定义类和对象以及全局属性的相同内容.

问题示例:

var window = 5;

(function () { 
    alert(window); 
})();
Run Code Online (Sandbox Code Playgroud)

上面的代码具有不可预测的结果,因为这window是指向窗口对象的单词.Firefox会阻止对它的修改,因此警报仍将引用窗口对象,而在IE8中,您将获得有价值的警报5.


Fel*_*ing 0

函数内部没有其他自动符号(除了this,但无论如何你都不能创建具有该名称的变量),如果这就是你的意思。但是有几个默认的全局变量,因此在函数内定义具有相同名称的变量将隐藏全局变量。