2016-10-04 108 views
2

有人可以解釋這個比較聲明嗎? 我瞭解如何與& &和||但下面的一個班輪還有別的事JavaScript比較聲明

typeof(varName) === 'undefined' == 0 
+1

來自哪裏的代碼?因爲它很糟糕。我可能會期望從縮小到像這樣的東西,但它絕對不會被縮小。 – vlaz

+0

看到這個:http://www.w3schools.com/js/js_comparisons.asp – Sparrow

+0

Erm,無論如何'類型varName ===「undefined」(括號是多餘的和不需要的)將檢查'varName'是否是'undefined'。然後_that_的結果被鬆散地檢查爲零,這與檢查它是否爲'false'相同。 – vlaz

回答

4

可以說varName是未定義的。你的代碼行會經過以下步驟(每個新行是下一步):

typeof(varName) === 'undefined' == 0 
typeof(undefined) === 'undefined' == 0 
'undefined' === 'undefined' == 0 
true == 0 
false 

現在讓我們說varName被定義爲等於5

typeof(varName) === 'undefined' == 0 
typeof(5) === 'undefined' == 0 
'number' === 'undefined' == 0 
false == 0 
true 

這是錯誤代碼。你可以用typeof(varName) !== 'undefined'

+0

感謝您解釋 –

0
typeof(varName) === 'undefined' == 0 

得到相同的結果上述表達式也可以寫爲

!(typeof(varName) === 'undefined') 

而不是使用運營商(!)他們使用== 0的。但是如果你做===0,它將不起作用,因爲它也會檢查數據類型,並且總是返回false

例如:

true == 0 => false 
false == 0 => true 

但是如果你使用===

true === 0 => false 
false === 0 => false 

注:typeof(varName) === 'undefined' == 0是做一個方式。

使用非運營商:

!(typeof(varName) === 'undefined')