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

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

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

但这对我来说不太好。

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


当前回答

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

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

其他回答

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

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

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

创建像isBoolean这样的函数,它包含了一个线性typeof v === "boolean",从长远来看似乎非常不方便。我很惊讶几乎每个人都建议创建自己的函数。这似乎与扩展原生原型是一样的癌症。

您需要在参与的每个项目中重新创建它们 其他开发人员可能有不同的习惯,或者需要检查您的函数的源代码,以查看您使用的检查的实现,以了解您的检查的弱点 你会感到沮丧,当你试图写一行在控制台现场不属于你的项目

记住typeof v === "boolean"就行了。 在IDE中添加一个模板,这样就可以通过一些三个字母的快捷方式来放置它。

这就是typeof存在的意义。括号是可选的,因为它是一个操作符。

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

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

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

在JavaScript中检查变量类型最可靠的方法是:

var toType = function(obj) {
  return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase()
}
toType(new Boolean(true)) // returns "boolean"
toType(true); // returns "boolean"

造成这种复杂性的原因是typeof true返回“boolean”,而typeof new boolean (true)返回“object”。