が false の場合co.chkShowRSB
、期待される結果は何ですか? 私はそれが間違っていると思いますが、これは機能する方法ですか?なぜ?
var test = chkShow:co.chkShowRSB || true;
が false の場合co.chkShowRSB
、期待される結果は何ですか? 私はそれが間違っていると思いますが、これは機能する方法ですか?なぜ?
var test = chkShow:co.chkShowRSB || true;
false || true
本当です。「または真」を含むブール項が偽になることはありません。
(いわゆる「短絡または」)演算子の2番目のオペランドと同様に、それtrue
はあなたの場合です。共通ルールは…true
||
var x = a || b; // = a (and b won't be evaluated), if it's a truthy value, b otherwise
var y = a && b; // = a (and b won't be evaluated), if it's a falsy value, b otherwise.
OK、これで画像が得られましたx = false || true;
。true を割り当てます。なんで?short-circuit-operatorの使用方法が以下の場合と同じであることを理解するのは非常に簡単です。
x = (false ? false : true);
ただし、主に関数の引数のデフォルト値を設定するために使用されるためx
、最初のオペランドがundefined
. 明示的にチェックする以外に、未定義の値を除外する方法はありません。次に使用する必要があります。
x = val === undefined ? defaultVal : val;
または、 であるundefined
必要はなく、確実にundefined
確認したい場合:
x = (function(val,undefined)//second argument will be the true undefined value
{
return (val === undefined ? defaultVal : val);
})(val);//don't pass second argument
三次演算子を使用する必要があります。chkShow:co.chkShowRSB がブール値の場合、コードは常に true を返します。
var test = chkShow:co.chkShowRSB == false ? false : true;