Javascript/jQuery有系统变量吗?

Nar*_*rek 1 javascript jquery system-variable

我注意到了奇怪的问题

看看这个jQuery:

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

    $('body').append(status+' - '+status1);
});
Run Code Online (Sandbox Code Playgroud)

小提琴

如您所见,输出是:

- 2
Run Code Online (Sandbox Code Playgroud)

statusJavaScript或jQuery的system var也是如此?

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

Fel*_*ing 8

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

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

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


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

(function() {
    var status = 'foo';
    // ....
}());
Run Code Online (Sandbox Code Playgroud)