10

これは私には意味がありませんが、これを使用したコードを見たような気がします:

var abc = def || ghi;

私の質問は、これは有効ですか? 変数宣言に条件を追加できますか? 答えはノーだと思いますが、コードで似たようなものを一度見たことが心の奥底にあります。

4

4 に答える 4

17

これは、偽でない場合 (つまり、 、 、 、または空文字列でない場合)の値を返し、そうでない場合abcは の値を返します。deffalsenullundefined0ghi

これは次と同等です。

var abc;
if (def) abc = def;
else abc = ghi;

これは一般的にオプションに使用されます。

function myfunc (opts) {
    var mything = opts.mything || "aaa";
}

呼び出すmyfunc({mything:"bbb"})と、指定した値が使用されます。"aaa"何も指定しない場合に使用されます。

この場合、呼び出し元がパラメーターを完全にスキップできるようにするために、次のように関数を開始することもできます。

opts = opts || {};
于 2012-06-28T18:07:48.827 に答える
6

コード変数abc = def || ghi;

と同じことです

if (def) { //where def is a truthy value
   var abc = def;
} else {
   abc = ghi;
}

if ステートメントのような条件が必要ですか?

if (xxx==="apple") { 
    var abc = def;
} else {
    abc = ghi;
}

三項演算子として書かれたものは次のとおりです。

var abc = (xxx==="apple") ? def : ghi;
于 2012-06-28T18:11:24.453 に答える
3

はい、変数宣言に条件を追加できます

こんな感じで使えます、

function greet(person) {
    var name = person || 'anonymouse';
    alert('Hello ' + name);
}
greet('jashwant');
greet();​

jsfiddle デモ

于 2012-06-28T18:07:40.967 に答える
0

わかりました、ほら、それは次のようなものです。どちらかが真かどうかを確認します。本物が返ってきます。:)

var abc = def || ghi;

以下と同等です。

var abc = return (def == true) or (ghi == true)
于 2012-06-28T18:10:01.370 に答える