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

Mic*_*lps 2 javascript

我不明白发生了什么

var x=new Boolean(false)
if(x){
  console.log('plus')
}
console.log(x==false) //true
Run Code Online (Sandbox Code Playgroud)

为何if(x)回归true

Cod*_*gue 6

在文档中说:

任何值未定义或为null的对象(包括值为false的Boolean对象)在传递给条件语句时计算结果为true.例如,以下if语句中的条件求值为true

x = new Boolean(false);
if (x) {
  // ...this code is executed
}
Run Code Online (Sandbox Code Playgroud)

直接来自MDN.


Sam*_*rie 5

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

据说:

任何值未定义或为null的对象(包括值为false的Boolean对象)在传递给条件语句时计算结果为true.


Cer*_*rus 5

就这么简单:

x是一个Boolean对象。(记录它会显示Boolean {}:)

所有对象的计算结果为true(请参阅“描述”下的第一段