布尔类型可以有多少个值?

时间:2013-06-20 14:25:14

标签: javascript underscore.js

我只会猜到2.真/假。来自underscore.js的Howerver检查布尔类型,我们有:

_.isBoolean = function(obj) {
    return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
  };

我原本以为检查一个真或假的值就足够了,但是b.c.第3个操作数

 toString.call(obj) == '[object Boolean]'

必须有其他值?

3 个答案:

答案 0 :(得分:1)

该方法检查该值是否为布尔基元(truefalse),或者它是否是布尔内置对象类型的实例。换句话说,涉及两种类型,因此它会检查两者。

答案 1 :(得分:1)

还有Boolean Objects与原语不同(但仍然是布尔值):

new Boolean(false) == false // true
new Boolean(false) === false // false

答案 2 :(得分:1)

试试这个:

var bool = new Boolean();

这构造了一个新的Boolean object。现在,大概是布尔值必须是truefalse,对吗?

bool === true; // returns false
bool === false; // returns false

所以它是一个布尔值,但truefalse都不是。这是下划线适应的情况。

原因是它是Boolean 对象truefalse是Javascript原语。任何对象都不等于基元或实际上除了它本身之外的任何对象。