var foo=[0];
if(foo) alert('first');
if(foo==true) alert('second');
請告訴我,爲什麼第二次警告不起作用?在第一警報foo
強制轉換爲Boolean
,所以誤區的JavaScript類型系統
Boolean(foo);
//true
如果「富」是「真」,爲什麼沒有第二個提醒的工作?
var foo=[0];
if(foo) alert('first');
if(foo==true) alert('second');
請告訴我,爲什麼第二次警告不起作用?在第一警報foo
強制轉換爲Boolean
,所以誤區的JavaScript類型系統
Boolean(foo);
//true
如果「富」是「真」,爲什麼沒有第二個提醒的工作?
這裏,
如果(富)警報,因爲foo是不是null,條件計算爲真。
但是,這並不意味着富本身等於真,因此第二警報不顯示。
因爲最初foo
是Array
而不是Boolean
,並且您正在將foo
與布爾值進行比較。 if (...)
-statement評估爲true或false,foo == true
在此處評估爲false。如果您使用if (!!foo == true)
(或只是if (!!foo)
)或if (foo != null)
或if (foo)
第二警報就會被解僱。
由於foo
轉換爲布爾型(適用於陣列)和foo
至true
的比較之間存在差異。
在後一種情況下,這是一個比較沒有的轉換,而foo
顯然與true
不一樣。需要注意的是轉換確實還發生:foo == true
是false
最後將其「轉化」成false
爲if
。 :)
由於當一個數組等於'true'? – 2011-03-16 10:51:43