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

新手上路,请多包涵

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

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

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

但这对我来说似乎并不漂亮。

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

原文由 Matias Cicero 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.5k
2 个回答

这就是 typeof 的用途。括号是可选的,因为它是一个 _运算符_。

 if (typeof variable == "boolean") {
 // variable is a boolean
 }

原文由 Amit Joki 发布,翻译遵循 CC BY-SA 4.0 许可协议

With pure JavaScript , you can just simply use typeof and do something like typeof false or typeof true and it will return "boolean"

但这不是唯一的方法,我在下面创建函数来展示您可以在 JavaScript 中检查 布尔值 的不同方式,以及您可以在一些新框架中执行此操作的不同方式,让我们从这个开始:

 function isBoolean(val) {
   return val === false || val === true;
}

或单行 ES6 方式…

 const isBoolean = val => 'boolean' === typeof val;

并称之为!

 isBoolean(false); //return true

同样在 Underscore 源代码中,他们像这样检查它(在函数名称的开头使用 _.):

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

同样在 jQuery 中,您可以这样检查它:

 jQuery.type(true); //return "boolean"

React 中,如果使用 propTypes,您可以像这样检查一个值是否为布尔值:

 MyComponent.propTypes = {
  children: PropTypes.bool.isRequired
};

如果使用 TypeScript ,您也可以使用 type boolean

 let isDone: boolean = false;

还有另一种方法,就像将值转换为布尔值并查看它是否仍然完全相同,例如:

 const isBoolean = val => !!val === val;

或者喜欢:

 const isBoolean = val => Boolean(val) === val;

并打电话给它!

 isBoolean(false); //return true

不建议为此使用任何框架,因为它实际上是 JavaScript 中的简单检查。

原文由 Alireza 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题