我在今天的代碼看到這個和我也是震驚的是,它不會產生錯誤爲什麼這不會錯誤?
if($('.MyClass'))
{
// do stuff here
}
所以這是一個if語句內的jQuery選擇。根據螢火蟲,如果沒有找到選擇器,它將返回null。如果發現它會返回dom對象。
因此,從我可以告訴它總是進入if語句,但我更加震驚,它不會錯誤。
如果在C#中試圖只在if語句中有一個對象或null,我認爲它不會編譯。
我期待至少有一個錯誤出現在螢火蟲中。
我在今天的代碼看到這個和我也是震驚的是,它不會產生錯誤爲什麼這不會錯誤?
if($('.MyClass'))
{
// do stuff here
}
所以這是一個if語句內的jQuery選擇。根據螢火蟲,如果沒有找到選擇器,它將返回null。如果發現它會返回dom對象。
因此,從我可以告訴它總是進入if語句,但我更加震驚,它不會錯誤。
如果在C#中試圖只在if語句中有一個對象或null,我認爲它不會編譯。
我期待至少有一個錯誤出現在螢火蟲中。
它沒有錯誤,因爲(我假設,當然,你輸錯了你的問題,你必須在你的類名像if($('.MyClass'))
引號):
if(null){
// Do something
}
是有效的語法在JavaScript(儘管它可能無法達到你期望的效果)。
JavaScript將嘗試將null轉換爲布爾值。當這種轉換髮生時,JavaScript指定演員應該返回false
。
我會更擔心有關報價:
if($('.MyClass'))
{
// do stuff here
}
如果THAT的話,那麼這將是完全有效的。在JavaScript中(我認爲),什麼是不0
或null
或false
是true
,這意味着如果它存在的jQuery對象將評估爲true
,並null
(計算結果爲false
),如果它沒有。
您的問題的代碼會產生語法錯誤。
也許你的意思是
if($('.MyClass'))
{
// do stuff here
}
(通知周圍的.MyClass
引號)
這工作,因爲jQuery的,如果沒有選擇匹配返回一個空的對象。但對象沒有少..這樣的,如果代碼總是會被執行..
有用的語法將
if($('.MyClass').length)
{
// do stuff here
}
是錯別字固定。 – chobo2 2011-05-26 16:00:25
JavaScript並不是C#。
if (X) {}
(其中X
評估爲null
)是完全有效的語法。
而且沒關係,因爲選擇器永遠不會是null
。這是一個對象,對象始終評估爲true
。
這一切都說,我期望從
if ($(.MyClass))
地獄和酷刑,因爲它不是
if ($('.MyClass'))
。
@Tomalak Geret'kal - 所以如果它沒有找到任何匹配的東西,它仍會返回一個對象是什麼原因? So null == true? – chobo2 2011-05-26 16:00:03
@ chobo2:'null'與__沒有任何關係。選擇器是一個對象。它包含一個空的節點集合是一個內部屬性,它不會影響對象本身的動態類型。它不像一些低級C鏈接列表指針。 :) – 2011-05-26 16:00:48
@chobo:不,它不會返回null。它返回一個對象。你在哪裏讀到'null'被返回? – 2011-05-26 16:00:53
每次調用'jQuery'(至少有一個選擇器)都會返回一個jQuery對象。對象總是評估爲「真」。不要忘記JavaScript是動態輸入的。在這種情況下,你有一個語法錯誤*編輯:不再是*。 – 2011-05-26 15:56:51
我在chrome中出錯:我得到'Uncaught SyntaxError:意外的令牌。' – hunter 2011-05-26 15:57:21
正是......你不能用'.'開始一個變量名稱。 – hunter 2011-05-26 15:58:33