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

16 浏览
0 Comments

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

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

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

if(jQuery.type(new Boolean()) === jQuery.type(variable))
      //做一些操作..

但我觉得这样做不够简洁。

有没有更简洁的方法来实现这个?

0
0 Comments

如何检查一个类型是否为布尔类型

在JavaScript中,我们可以使用typeof运算符来检查一个变量的类型。如果我们只想检查一个变量是否是布尔类型的原始值,我们可以使用typeof运算符和字符串'boolean'进行比较。例如:typeof variable === 'boolean'

但如果我们有一些使用构造函数创建的布尔类型,那么这些实际上并不是真正的布尔类型,而是包含原始布尔值的对象。对于这种情况,我们可以使用以下方法同时检查原始布尔类型和使用new Boolean创建的对象:

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

这个方法会判断传入的参数是否为布尔类型,无论是原始布尔类型还是使用new Boolean创建的对象。如果是布尔类型,则返回true,否则返回false。

下面是一些使用这个方法的示例:

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

总结一下,虽然将原始布尔类型和布尔对象视为相同并不实际,但是对于判断一个变量是否为布尔类型,这个方法是有效的。这个方法还对传入的参数进行了严密的判断,避免了一些潜在的错误。

0
0 Comments

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

在纯JavaScript中,你可以简单地使用typeof并执行typeof false或typeof true,它将返回"boolean"...

但这并不是唯一的方法,我在下面创建了一些函数来展示在JavaScript中检查布尔型的不同方法,以及在一些新框架中可以使用的不同方法,让我们从这个开始:

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

或者使用一行的ES6方式...

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

然后像这样调用它!

isBoolean(false); //返回true

在Underscore源代码中,他们通过以下方式进行检查(函数名以_开头):

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

在jQuery中,你可以这样检查:

jQuery.type(true); //返回"boolean"

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

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

如果使用TypeScript,你也可以使用类型boolean:

let isDone: boolean = false;

还有另一种方法,就是将值转换为布尔型,然后看它是否仍然相同,像这样:

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

或者像这样:

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

然后调用它!

isBoolean(false); //返回true

在JavaScript中,不建议使用任何框架来进行这个简单的检查。

不同意:new Boolean(true) === new Boolean(true)应该返回false(因为引用是不同的)。这就是为什么isBoolean(new Boolean(true))会返回false,而实际上应该返回truenew Boolean(true)的类型是boolean)。

你如何为val指定类型? export const isBoolean = (val: ???): boolean => "boolean" === typeof val

0
0 Comments

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

在JavaScript中,我们可以使用typeof操作符来检查变量的类型。这个操作符返回一个字符串,表示变量的类型。例如,我们可以使用typeof来检查一个变量是否为布尔类型。

下面是一个使用typeof来检查布尔类型的示例代码:

if (typeof variable == "boolean") {
    // variable是一个布尔类型
}

需要注意的是,typeof不是一个函数,而是一个操作符。所以括号是可选的。

然而,有一个问题是,当使用大写字母B的Boolean对象时,typeof会返回"object"而不是"boolean"。

另外,使用typeof和字符串比较是比较慢的,不建议使用它们。可以直接使用(variable === true || variable === false)来检查变量是否为布尔类型。

以下是一些关于检查布尔类型的问题和讨论:

- 问为什么使用typeof(name)输出的是"string"?实际上,name是一个全局的window属性,并且有一个特殊的getter。

- 有人建议使用typeof(variable) === typeof(true)来检查布尔类型,是否更可靠?但实际上,使用更简洁的typeof true返回的是"boolean"更加直观和明确。

- 有人问英语中是用大写字母B拼写布尔类型还是小写字母b拼写?实际上,在英语中布尔类型是用小写字母b拼写的。

总结起来,我们可以使用typeof操作符来检查变量的类型是否为布尔类型。但需要注意的是,使用大写字母B的Boolean对象时,typeof会返回"object"而不是"boolean"。为了更直观和明确地检查布尔类型,可以直接使用(variable === true || variable === false)来进行判断。

0