如何检查变量的类型是否为布尔类型?
我的意思是,有一些替代方案,例如:
if(jQuery.type(new Boolean()) === jQuery.type(variable))
//Do something..
但这对我来说似乎并不漂亮。
有没有更清洁的方法来实现这一目标?
原文由 Matias Cicero 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何检查变量的类型是否为布尔类型?
我的意思是,有一些替代方案,例如:
if(jQuery.type(new Boolean()) === jQuery.type(variable))
//Do something..
但这对我来说似乎并不漂亮。
有没有更清洁的方法来实现这一目标?
原文由 Matias Cicero 发布,翻译遵循 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 许可协议
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
这就是
typeof
的用途。括号是可选的,因为它是一个 _运算符_。