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

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

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

但这对我来说不太好。

有没有更清洁的方式来实现这个目标?


当前回答

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

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

其他回答

你可以使用纯Javascript来实现这一点:

var test = true;
if (typeof test === 'boolean')
   console.log('test is a boolean!');

有时我们只需要一种方法来检验。Typeof不能用于date等。所以我用

Date.prototype.getType() { return "date"; }

此外,对于数字,字符串,布尔等,我们经常需要以单一的方式检查类型…

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

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

关于es2015箭头函数的另一个决策

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

使用或不使用jQuery,有三种“普通”方法来检查这一点。

首先是强制布尔值,然后检查它是否等于原始值: 函数isBoolean(n) { 返回! !N === N; } 做一个简单的检查: 函数isBoolean(n) { 返回typeof n === 'boolean'; } 在原语上对类包装器进行完全过度且不必要的实例化: 函数isBoolean(n) { 返回n instanceof Boolean; }

第三个函数只有在创建一个新的布尔类并将其传入时才会返回true。

为了详细说明基元强制(如#1所示),所有基元类型都可以这样检查:

布尔: 函数isBoolean(n) { 返回! !N === N; } 数量: 函数isNumber(n) 返回+n === n; } 字符串: 函数isString(n) { 返回" +n === n; }