为什么新布尔值(false)为真?

时间:2014-06-17 07:27:09

标签: javascript

我不明白发生了什么

var x=new Boolean(false)
if(x){
  console.log('plus')
}
console.log(x==false) //true

为什么if(x)会返回true

7 个答案:

答案 0 :(得分:6)

在文档中说:

  

任何其值未定义或为null的对象,包括布尔值   值为false的对象,传递给a时计算结果为true   条件陈述。例如,以下条件如果   statement评估为true

x = new Boolean(false);
if (x) {
  // ...this code is executed
}

直接来自MDN

答案 1 :(得分:5)

请参阅MDN文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean

据说:

  

任何其值未定义或为null的对象,包括布尔值   值为false的对象,传递给a时计算结果为true   条件陈述。

答案 2 :(得分:4)

这很简单:

xBoolean个对象。 (记录它将显示:Boolean {}

所有对象评估为true(请参阅first paragraph under "Description"

答案 3 :(得分:2)

var x = new Boolean();

使用关键字new时,创建的变量是对象类型,对象类型值始终为true

答案 4 :(得分:0)

对象是真实的。 见http://james.padolsey.com/javascript/truthy-falsey/

所以在没有隐式类型转换的情况下评估它(与false比较时)是真的。

答案 5 :(得分:0)

您错误地使用布尔 功能 http://www.w3schools.com/js/js_booleans.asp

您正在寻找的是:

var x = false;
if (Boolean(x)){

}

但是,既然你已经知道x是真还是假,并且你没有评估一个表达式,看它是真还是假(根据链接),你不要需要函数Boolean()

答案 6 :(得分:0)

布尔类不是原始值。 当你检查

if (someObject) 

它将返回true,因为

Boolean(someObject)

将始终返回true。

这里有几个选项: 1。 使用

if (valueOf(x))

再次获得原始值

2。 删除' new'关键字

x = Boolean(false)

所以你得到布尔函数的值


查看What is the purpose of new Boolean() in Javascript?