0

が false の場合co.chkShowRSB、期待される結果は何ですか? 私はそれが間違っていると思いますが、これは機能する方法ですか?なぜ?

var test = chkShow:co.chkShowRSB || true;

4

4 に答える 4

1
false || true 

本当です。「または真」を含むブール項が偽になることはありません。

于 2012-09-26T10:40:17.637 に答える
1

(いわゆる「短絡または」)演算子の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.
于 2012-09-26T10:39:23.393 に答える
0

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
于 2012-09-26T10:48:09.097 に答える
0

三次演算子を使用する必要があります。chkShow:co.chkShowRSB がブール値の場合、コードは常に true を返します。

var test =  chkShow:co.chkShowRSB == false ? false : true;
于 2012-09-26T10:41:50.400 に答える