2012-09-26 18 views

回答

0

好了,你現在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 
1

它在你的情況下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. 
1
false || true 

是真實的。沒有任何情況下,帶「或真」的布爾項可能是錯誤的。

0

你應該使用三級操作員。如果chkShow:co.chkShowRSB是布爾值,您的代碼將始終返回true;

var test = chkShow:co.chkShowRSB == false ? false : true; 
+1

或者只是'!! chkShow:co.chkShowRsb'。 – raina77ow

+0

如果未定義,它將返回false而不是true。有趣的永遠不會少。 –