函数中未声明的JavaScript变量覆盖使用

Undeclared JavaScript variable in functions overriding over uses

本文关键字:覆盖 变量 JavaScript 未声明 函数      更新时间:2023-09-26

我有两个函数示例,如下

function call1() {
    variable = "test string";
}
function call2() {
    variable = responseFromAJAX();
    document.title = variable;
    setTimeout(function() { call2(o); }, 1000 );
}

如果任何一个函数都可以重写未声明的变量"variable"?即使"变量"没有声明在函数的范围之外?

非常感谢

如果任何一个函数都可以重写未声明的变量"variable"?

是的。除非您处于严格模式,否则为未声明的变量赋值会隐式创建全局变量(我称之为隐式全局变量的恐怖)。所以任何一个函数都可以写入。幸运的是,严格模式阻止了隐式全局变量。

是的,如果您没有将其声明为类型var,则它将被视为全局变量。这与声明全局变量相同

因此它将充当

    function call1() {
        variable = "test string";
    } // If you call this method variable will have the value as "test String"
function call2() {
    variable = responseFromAJAX();
    document.title = variable;
    setTimeout(function() { call2(o); }, 1000 );
} // If you call this method variable will have the value will be the value from AJAX