如何检查类型是否为布尔型?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

我如何检查变量的类型是否为布尔类型?

我的意思是,有一些替代方案,例如:

if(jQuery.type(new Boolean()) === jQuery.type(variable))
      //Do something..

但这对我来说似乎并不美妙。

有没有更好的方法来实现这一目标?

提问于
用户回答回答于

那就是那个typeof。由于它是一个操作员,所以括号是可选的。

if(typeof(variable) === "boolean"){
  // variable is a boolean
}
用户回答回答于

如果你只是想检查一个原始值

typeof variable === 'boolean'

如果出于某种奇怪的原因,您使用构造函数创建了布尔值,那么这些布尔值并不是真正的布尔值,而是包含原始布尔值的对象,检查原始布尔值和创建的对象的一种方法new Boolean是:

function checkBool(bool) {
    return typeof bool === 'boolean' || 
           (typeof bool === 'object' && 
            bool !== null            &&
           typeof bool.valueOf() === 'boolean');
}

function checkBool(bool) {
    return typeof bool === 'boolean' || 
           (typeof bool === 'object' && 
            bool !== null            &&
           typeof bool.valueOf() === 'boolean');
}

console.log( checkBool( 'string'          )); // false, string
console.log( checkBool( {test: 'this'}    )); // false, object
console.log( checkBool( null              )); // false, null
console.log( checkBool( undefined         )); // false, undefined
console.log( checkBool( new Boolean(true) )); // true
console.log( checkBool( new Boolean()     )); // true
console.log( checkBool( true              )); // true
console.log( checkBool( false             )); // true

扫码关注云+社区