我不明白发生了什么
var x=new Boolean(false)
if(x){
console.log('plus')
}
console.log(x==false) //true
为什么if(x)
会返回true
?
答案 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)
答案 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)
所以你得到布尔函数的值