2017-03-15 71 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引擎的源代码,所以我不知道你在哪里可以看。