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

2022-08-29 23:32:47

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

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

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

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

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


答案 1

这就是类型在那里的目的。括号是可选的,因为它是运算符。

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

答案 2

使用纯JavaScript,您可以简单地使用并执行类似or之类的操作,然后它将返回...typeoftypeof falsetypeof true"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,则还可以使用类型布尔值

let isDone: boolean = false;

还有另一种方法是将值转换为布尔值,然后查看它是否完全相同,如下所示:

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

或类似:

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

并称之为!

isBoolean(false); //return true

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