0
這是什麼意思?var w = q || q2;這個表達意味着什麼?
var q = [];
var q2 = ["canada","usa","mexico"];
var w = q||q2;
document.writeln(w);
變量w的值是:[]空列表。
有人可以向我解釋爲什麼它顯示這個[]而不是[「加拿大」,「美國」,「墨西哥」]。
這是什麼意思?var w = q || q2;這個表達意味着什麼?
var q = [];
var q2 = ["canada","usa","mexico"];
var w = q||q2;
document.writeln(w);
變量w的值是:[]空列表。
有人可以向我解釋爲什麼它顯示這個[]而不是[「加拿大」,「美國」,「墨西哥」]。
您應該從MDN讀取Logical Operators。根據文檔
邏輯算子OR(
||
)expr1 || expr2
返回
expr1
如果它可以被以其它方式轉化成true;
,返回expr2
。因此,當與布爾值一起使用時,||如果 操作數爲true,則返回true;如果兩者都是假的,則返回false。
簡而言之,邏輯運算符從左到右進行評估。在你的情況下,由於你已經聲明q
是一個空的數組([]
),它的計算結果爲真,並立即開始並將w
分配給該數組。
如果你想q2
佔先,你可以簡單地做
var w = q2 || q;
所以只有當q2
計算結果爲falsey將其分配w
是q
代替這種方式。另一種選擇是根本不宣佈q
或聲明它有點虛僞。你可以找出什麼評估false
here。
因爲'[]'是一個被認爲是真值的數組對象。 'q.length? q:q2;' – undefined 2015-04-05 23:22:09
不爲空; falsy。但'q'是真的,所以'q || q2'將評估爲'q' – elclanrs 2015-04-05 23:22:11