2017-03-15 66 views
-3
if(typeof(variable) === "boolean"){ 
    // variable is a boolean 
} 

以下兩個代碼示例中的哪一個等同於上面的那個?typeof方法在Javascript中如何工作?

樣品1個

if(variable === true || variable === false){ 
    // variable is a boolean 
} 

樣品2

if(variable == true || variable == false){ 
    // variable is a boolean 
} 
+1

明顯不是第二個,因爲'1 == true',但不是布爾型 – Eric

+1

如果這是你的問題,爲什麼不試試在控制檯中輸入typeof(1)=='boolean'',而不是問一個人? – Eric

回答

2

第一種情況是等價的。 ===執行與==相同的操作,但它不執行任何類型轉換。有關更多詳細信息,請參閱this answer

所以,

if (variable === true || variable === false) { 
    ... 
} 

的值爲true,只有當variable是一個布爾變量。


至於typeof內部的工作,你可以閱讀this,當然,這是manual。請記住,typeof是一種語言運算符,非常類似於=====&。要準確知道它是如何實現的以及它如何知道變量類型,您需要檢查它的代碼。

我從來沒有看過JavaScript引擎的源代碼,所以我不知道你在哪裏可以看。