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中也有一些被认为是保留的单词,因此即使在本地作用域中也应该避免使用它们 。