我刚刚发现命名变量的难题很难arguments.
var arguments = 5;
(function () {
console.log(arguments);
})();
Run Code Online (Sandbox Code Playgroud)
Output: []
事实证明,这arguments是"所有函数中都可用的局部变量",因此在每个新的执行上下文中arguments都会被遮蔽.
我的问题是:还有其他任何这样的奸诈名称,例如arguments,不是真正的保留词,但会导致仍然存在问题吗?
是.喜欢window或者document,例如.在此处查看更长的列表("其他javascript关键字").
不建议使用它们中的任何一个,即使有些可以按预期工作.
编辑:如javascript.about.com中提到的那样,"虽然它们不是保留字,但应避免使用这些字作为变量和函数." 它们主要列出了分类为预定义类和对象以及全局属性的相同内容.
问题示例:
var window = 5;
(function () {
alert(window);
})();
Run Code Online (Sandbox Code Playgroud)
上面的代码具有不可预测的结果,因为这window是指向窗口对象的单词.Firefox会阻止对它的修改,因此警报仍将引用窗口对象,而在IE8中,您将获得有价值的警报5.
函数内部没有其他自动符号(除了this,但无论如何你都不能创建具有该名称的变量),如果这就是你的意思。但是有几个默认的全局变量,因此在函数内定义具有相同名称的变量将隐藏全局变量。
| 归档时间: |
|
| 查看次数: |
294 次 |
| 最近记录: |