Javascript / jQuery有系统变量吗?

我注意到了奇怪的问题

看看这个jQuery:

$(function(){ status = 1; status1 = 2; $('body').append(status+' - '+status1); }); 

小提琴

你可以看到输出是:

 - 2 

那么status是JavaScript或jQuery的系统变量?

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

JavaScript具有全局变量,在浏览器中,全局变量是全局对象的属性,即window

现在, window本身有一些预定义的属性, 其中一些是只读的 ,比如window.status [MDN] (这也可能因浏览器而异!)。 因此,使用这样的名称创建全局变量将失败(变量已存在,但您无法为其分配新值)。

您可以在MDN文档中找到预定义属性的列表。


这就是你应该避免全局变量的原因之一。 如果使用局部变量(通过使用var声明变量并在必要时将所有代码放在函数中),则不会出现此问题:

 (function() { var status = 'foo'; // .... }()); 

全局对象window确实有一个名为status的属性,用于在浏览器底部的状态栏中设置文本。

通过不使用var关键字,当您引用window.status您将覆盖此属性。 显然,只要用户没有将dom.disable_window_status_change首选项设置为false Firefox就不会让你改变它。

请参阅此链接以获取文档,并查看此链接以获取所有“全局”属性的列表。

JS中也有一些被认为是保留的单词,因此即使在本地作用域中也应该避免使用它们