布尔值的比较

首先需要知道的是,js中有6个值为false,分别是: 0, ‘’, null, undefined, NaN 和 false, 其他(包括{}, [], Infinity)为true.

可以使用Boolean()函数或是两次取非就能获得对象的布尔值,例如Boolean(undefined)和!!undefined同样能取得布尔值false,

对于0, ‘’, null, undefined, NaN,{}, [], Infinity求布尔值,分别是false false false false false true true true.

因此我们知道的一点是:对象的布尔值是true,即使是对象{}。

另外, 不同的对象比较返回false,只有引用相同的对象才返回true,如:

复制代码
var a = b = {};

console.log(a
==b) ; //true
console.log({}
=={}); //false
console.log([]
==[]); //false,因为[]是object
复制代码

还需要注意的是:

 console.log(new Boolean(false)==false);   //true
console.log(new Boolean(true)==true); //true

 

另外,js中有Boolean对象,例如:通过new Boolean(false)能获得一个初始值为false的布尔对象,但是不能用new Boolean()来获取

对象的布尔值,因为这样我们就new了一个布尔对象,既然是对象,我们获得的就永远是true,所以不幸的是,

if(new Boolean(false)){//这里面的代码一定会执行,即使布尔对象的值是false}. 再次强调,用Boolean()或两次取非来获取布尔值.

 以下值做==运算


true0‘’undefinednullInfinityNaN{}[]
true

×

×

×

×

×

×

×

×

0

×

×

×

×

×

‘’

×

×

×

×

×

undefined


×

×

×

×

null



×

×

×

×

Infinity




×

×

×

NaN





×

×

×

{}






×

×

[]







×