我注意到了一个奇怪的问题。
看看这个jQuery:
$(function(){
status = 1;
status1 = 2;
$('body').append(status+' - '+status1);
});
如您所见,输出为:
- 2
所以status
是JavaScript或jQuery的系统变量吗?
还有其他像这样的变种吗?
答案 0 :(得分:8)
JavaScript具有全局变量,在浏览器中,全局变量是global object的属性window
。
现在,window
本身有几个预定义的属性,其中一些是只读的,如window.status
[MDN](这也可能因浏览器而异!) 。因此,使用这样的名称创建全局变量将失败(变量已存在,但您无法为其分配新值)。
您可以在MDN documentation中找到预定义属性的列表。
这是避免全局变量的原因之一。如果您使用局部变量(通过使用var
声明变量并在必要时将所有代码放在函数中),则不会出现此问题:
(function() {
var status = 'foo';
// ....
}());
答案 1 :(得分:3)
全局对象window
确实有一个名为status
的属性,用于在浏览器底部的状态栏中设置文本。
在您引用var
时,如果不使用window.status
关键字,则会覆盖此属性。显然,只要用户没有将dom.disable_window_status_change
首选项设置为false
,Firefox就不允许您更改此内容。
有关文档,请参阅 this link , this one 查看所有“全球”属性的列表。
JS中也有一些被认为是保留的词,因此即使在本地范围内,也应该避免使用 using these 。