我只会猜到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]'
必须有其他值?
答案 0 :(得分:1)
该方法检查该值是否为布尔基元(true
或false
),或者它是否是布尔内置对象类型的实例。换句话说,涉及两种类型,因此它会检查两者。
答案 1 :(得分:1)
还有Boolean Objects与原语不同(但仍然是布尔值):
new Boolean(false) == false // true
new Boolean(false) === false // false
答案 2 :(得分:1)
试试这个:
var bool = new Boolean();
这构造了一个新的Boolean object。现在,大概是布尔值必须是true
或false
,对吗?
bool === true; // returns false
bool === false; // returns false
所以它是一个布尔值,但true
和false
都不是。这是下划线适应的情况。
原因是它是Boolean
对象。 true
和false
是Javascript原语。任何对象都不等于基元或实际上除了它本身之外的任何对象。