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 に答える