5.32 isBoolean

5.32.1 语法

_.isBoolean(object)

5.32.2 说明

如果object是一个布尔值,返回true,否则返回false。

5.32.3 代码示例

_.isBoolean(null); //=> false
_.isBoolean(true); //=> true
_.isBoolean(false); //=> true

_.isBoolean(!0); //=> true
_.isBoolean(!1); //=> true

5.32.4 源码

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

布尔值除了ture就是false,为何还要toString.call(obj) === '[object Boolean]'

5.32.6 如果只用 obj === true || obj === false

function isBoolean(obj){
    return obj === true || obj === false;
}
isBoolean(1); //=> true
isBoolean(true); //=> true
isBoolean(false); //=> true
isBoolean(new Boolean(true)); //=> false 这里不行了

5.32.7 如果只用 toString.call(obj) === '[object Boolean]';

暂时还不知道这样子会有什么bug,欢迎讨论。

function isBoolean(obj){
    return toString.call(obj) === '[object Boolean]';
}
isBoolean(!1); //=> true
isBoolean(!0); //=> true
isBoolean(new Boolean(true)); //=> true
isBoolean(false); //=> true
isBoolean(true); //=> true

5.32.8 将值转化为布尔值

var expression= 1;
var x1 = !!expression; // 常用
var x2 = Boolean(expression);     // 推荐使用
var x3 = new Boolean(expression); // 不这样子使用

```