if([]){}//true
if([]==true){}//false
if([1]==true){}//true
if([2]==true){}//false
if([1,2]==true){}//false
if(['Hi']==true){}//false
if([{aaa:1}]==true){}//false
[ ]
是數組。數組是對象。對象是真的,所以[ ]
是真的。還行吧。Array和if語句
但我無法理解其他結果。
if([]){}//true
if([]==true){}//false
if([1]==true){}//true
if([2]==true){}//false
if([1,2]==true){}//false
if(['Hi']==true){}//false
if([{aaa:1}]==true){}//false
[ ]
是數組。數組是對象。對象是真的,所以[ ]
是真的。還行吧。Array和if語句
但我無法理解其他結果。
if([]){}//true
所有的JavaScript對象是truthy - 他們都強迫爲布爾值true
。
if([]==true){}//false
如果一個操作數是一個對象,而另一個操作數是一個布爾,則兩個操作數強制成數字值。這裏
0 == 1 // false
if([1]==true){}//true
同樣的事情:一個空數組會強制給0
。對於具有一個項的陣列,該項目將迫使對數與該值進行比較,以另一個操作數:
1 == 1 // true
if([2]==true){}//false
是:
2 == 1 // false
if([1,2]==true){}//false
如果數組有多個項目,則強制爲Number會導致NaN
:
NaN == 1 // false
if(['Hi']==true){}//false
字符串脅迫到數字值NaN
:
NaN == 1 // false
if([{aaa:1}]==true){}//false
一個目的還脅迫到數字值NaN
:
NaN == 1 // false
if([]==true){}//false
[]不是布爾值,它是一個數組。這就是說,一個空數組是一個布爾真。它不是 - 它是一個空陣列。
if([]){}將其評估爲定義而非null。
這是正確的,但它不能解釋爲什麼if([1] == true){} // true'。據我所知,'[1]'是'1'這是'真' – Aleadam 2011-03-28 17:37:51
接受一些答案1 .... – Neal 2011-03-28 17:24:44
同意 - 不要指望別人幫助,如果你不打算遵守問/應答/接受的SO協議。 (我們不期望100%接受,但0%是荒謬的) – 2011-03-28 17:29:06
我相信一個空陣列'[]'強制爲數值'0'。 – 2011-03-28 17:34:42