如果co.chkShowRSB
爲false,那麼預期結果是什麼?我希望它是錯誤的,但它是這樣的嗎?爲什麼?如果變量爲false,它將通過Javascript傳遞
var test = chkShow:co.chkShowRSB || true;
如果co.chkShowRSB
爲false,那麼預期結果是什麼?我希望它是錯誤的,但它是這樣的嗎?爲什麼?如果變量爲false,它將通過Javascript傳遞
var test = chkShow:co.chkShowRSB || true;
好了,你現在x = false || true;
了畫面真實的分配。爲什麼?這是很容易知道使用短路操作的是一樣的做:
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
它在你的情況下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.
false || true
是真實的。沒有任何情況下,帶「或真」的布爾項可能是錯誤的。
你應該使用三級操作員。如果chkShow:co.chkShowRSB是布爾值,您的代碼將始終返回true;
var test = chkShow:co.chkShowRSB == false ? false : true;
或者只是'!! chkShow:co.chkShowRsb'。 – raina77ow
如果未定義,它將返回false而不是true。有趣的永遠不會少。 –