0

这是乱七八糟的东西(不是我的代码,但我坚持使用它)。函数依赖于全局定义的变量。

function variableIssues(){
    alert(someGlobalString);  // alerts "foo"
}

有时,这个全局定义的变量是undefined. 在这种情况下,我们希望将其转换为进一步处理。功能被修改。

function variableIssues(){
    alert(someGlobalString); // undefined

    if (!someGlobalString){
        var someGlobalString = "bar";
    }  
}

但是,如果现在使用定义的 someGlobalString 调用此函数,则由于 javascript 评估,该变量将设置为undefined并始终设置为bar.

function variableIssues(){
    alert(someGlobalString); // "should be foo, but javascript evaluates a 
                             // variable declaration it becomes undefined"

    if (!someGlobalString){
        var someGlobalString = "bar";
    }  
}

我想就如何处理undefined全局变量获得一些建议。有任何想法吗?

4

1 回答 1

3

全局变量是window对象的属性,因此您可以使用以下命令显式访问它们window

if (!window.someGlobalString) {
// depending on possible values, you might want:
// if (typeof window.someGlobalString === 'undefined')
    window.someGlobalString = "bar";
}

如果您使用全局变量,那么这是更好的样式,因为很清楚您在做什么并且分配给未定义的全局变量不会在严格模式下引发错误。

于 2013-02-15T10:16:09.807 回答