2015-04-05 93 views
0

這是什麼意思?var w = q || q2;這個表達意味着什麼?

var q = []; 
var q2 = ["canada","usa","mexico"]; 
var w = q||q2; 
document.writeln(w); 

變量w的值是:[]空列表。

有人可以向我解釋爲什麼它顯示這個[]而不是[「加拿大」,「美國」,「墨西哥」]。

+1

因爲'[]'是一個被認爲是真值的數組對象。 'q.length? q:q2;' – undefined 2015-04-05 23:22:09

+0

不爲空; falsy。但'q'是真的,所以'q || q2'將評估爲'q' – elclanrs 2015-04-05 23:22:11

回答

1

您應該從MDN讀取Logical Operators。根據文檔

邏輯算子OR(||expr1 || expr2

返回expr1如果它可以被以其它方式轉化成true;,返回 expr2。因此,當與布爾值一起使用時,||如果 操作數爲true,則返回true;如果兩者都是假的,則返回false。

簡而言之,邏輯運算符從左到右進行評估。在你的情況下,由於你已經聲明q是一個空的數組([]),它的計算結果爲真,並立即開始並將w分配給該數組。

如果你想q2佔先,你可以簡單地做

var w = q2 || q; 

所以只有當q2計算結果爲falsey將其分配wq代替這種方式。另一種選擇是根本不宣佈q或聲明它有點虛僞。你可以找出什麼評估falsehere

相關問題