1

変数が存在するかどうかを確認するコードがあり、存在しない場合は変数を設定します。コードは次のとおりです。

if (typeof myVariable == "undefined") {
  console.log("Inside the if statement");
}

変数が存在する場合はif文には入らず、なんでもいいです。ただし、コードを次のように変更すると:

if (typeof myVariable == "undefined") {
  var myVariable = "";
}

変数が既に定義されていて上書きされても、if ステートメントが毎回トリガーされるという問題が発生します。

if ステートメントの条件が、その内容を変更することによってトリガーされている理由はありますか?

4

2 に答える 2

0

変数のスコープに注意する必要があります。この例では、myVar は foo メソッドにスコープされています。

function foo(myVar) {
    if(typeof myVar == 'undefined') {
        myVar = 'defaultValue';
    }

    console.log(myVar);
}

foo(); => 'defaultValue'

foo('bar'); => 'bar'

あるスコープで「myVariable」を定義してから、別のスコープに引き継ぐことを期待している可能性があるという問題に遭遇していると思われます。これが発生する唯一の方法は、「myVariable」がグローバル スコープにある場合です。

于 2013-11-08T18:02:51.477 に答える