2

これはスクリプトの先頭でよく見かけますが、それが何を意味するのか完全にはわかりません。誰か説明できますか?

var whatevername = whatevername || {};
4

4 に答える 4

3

OR 演算子を使用してデフォルト値を設定します。が設定されている場合whatevernameはそれが使用され、それ以外の場合は新しい空のオブジェクトが使用されます。

例:

function sayHi(options){
    options = options || {};
    if (options.useAlert){
        alert("hi");
    } else {
        console.log("hi");
    }
}

この場合、オプション パラメータが関数に渡されなくても、いつでも使用できます。

sayHi(); 
sayHi({"useAlert": true});

最初のケース{}では が使用され、options.useAlert は未定義になります。if ステートメントでは、false に設定されているのと同じで、console.log印刷に使用されます。

OR 演算子は通常、次のように使用されます。

if (hasAnEmailAddress || hasAPhoneNumber) {contactPerson()}

が true の場合hasAnEmailAddress、演算子は のhasAnEmailAddress代わりにの値を返しますhasAPhoneNumber。true でない場合は、2 番目の引数の値hasAPhoneNumberが返されます。

そのロジックは、デフォルト値を設定するときに使用されます。最初の引数が偽の場合、2 番目の引数が返されます (ブール値でなくても)。

于 2013-04-02T16:46:04.000 に答える
2

whatevernameまだ初期化されていない場合は、空のオブジェクトで初期化whatevernameされます。

同等のコード

if(!whatevername) whatevername  = {}
于 2013-04-02T16:47:19.360 に答える
1

これはデフォルト値ステートメントです。||おそらくご存知のとおり、OR の記号です。

このステートメントには、「whatevername を whatevername または空のオブジェクトに設定する」と書かれています。OR は、真の値 (空でも偽でもない) を読み取る 2 つのオブジェクトの最初のオブジェクトを選択します。whatwhatname が設定されている場合は、whatevername が取得されます。そうでない場合 (または null に設定されている場合) は、空のオブジェクトが取得されます。

于 2013-04-02T16:47:03.553 に答える