Javascript / jQuery有系统变量吗?

时间:2013-04-11 10:57:46

标签: javascript jquery system-variable

我注意到了一个奇怪的问题。

看看这个jQuery:

$(function(){
    status = 1;
    status1 = 2;

    $('body').append(status+' - '+status1);
});

Fiddle

如您所见,输出为:

- 2

所以status是JavaScript或jQuery的系统变量吗?

还有其他像这样的变种吗?

2 个答案:

答案 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