0

次の関数があるとします。

var variable;

function(variable);

function function(variable) {
    alert ("variable equals " + variable);
    if (variable != 'undefined') {
        ~~~code1~~~
    } else {
        ~~~code2~~~
    }
}

アラートの出力:

変数が未定義に等しい

ただし、~~~code2~~~ は実行されません。私の構文が間違っていると思います。変数を定義していない場合、関数関数で ~~~code2~~~ を実行するにはどうすればよいですか?

追加情報

次のコードのように、変数 variable がハードコードされている場合:

var variable;

function(variable)

function function(variable) {
    variable = 2;
    alert ("variable equals " + variable);
    if (exponent == 2) {
        ~~~code1~~~
    } else {
        ~~~code2~~~
    }
}

~~~code1~~~が実行されます。

4

1 に答える 1

3
> exponent != 'undefined'

抽象等価比較アルゴリズムを理解する必要があります。上記は、 の値をexponent文字列 "undefined" と比較しようとしています。exponentは定義されていますが、値が割り当てられていないため、(上記のアルゴリズムに従って) 文字列 "undefined" と等しくない値を返します。 undefined

したがって、その値を未定義の値と比較できます。

exponent != undefined

または、演算子を使用して値の型を適切な文字列値と比較できますtypeof(常に文字列を返すため)。

if (typeof exponent != 'undefined')

上記の厳密バージョンまたは抽象バージョン (!==または!=それぞれ) を使用するかどうかは、この場合は何の違いもありません。

于 2013-08-28T02:06:59.787 に答える