首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查type是否为Boolean

如何检查type是否为Boolean
EN

Stack Overflow用户
提问于 2015-03-03 00:23:00
回答 11查看 345.2K关注 0票数 354

如何检查变量的类型是否为Boolean类型?

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

代码语言:javascript
复制
if(jQuery.type(new Boolean()) === jQuery.type(variable))
      //Do something..

但这对我来说并不是很好。

有没有更干净的方法来实现这一点?

EN

回答 11

Stack Overflow用户

发布于 2015-03-03 00:35:27

如果您只想检查原始值

代码语言:javascript
复制
typeof variable === 'boolean'

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

代码语言:javascript
复制
function checkBool(bool) {
    return typeof bool === 'boolean' || 
           (typeof bool === 'object' && 
            bool !== null            &&
           typeof bool.valueOf() === 'boolean');
}

代码语言:javascript
复制
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

票数 42
EN

Stack Overflow用户

发布于 2015-03-03 00:27:17

您可以使用纯Javascript来实现此目的:

代码语言:javascript
复制
var test = true;
if (typeof test === 'boolean')
   console.log('test is a boolean!');
票数 17
EN

Stack Overflow用户

发布于 2017-08-04 21:53:13

如果您希望您的函数也可以验证布尔对象,最有效的解决方案必须是:

代码语言:javascript
复制
function isBoolean(val) {
  return val === false || val === true || val instanceof Boolean;
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28814585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档