使用new操作符和Boolean(value)构造函数时,得到的并不是原始的true或false,而是一个对象,JS将对象视为真(true)
var oBooleanTrue = new Boolean(true); var oBooleanFalse = new Boolean(false); console.log(oBooleanTrue); console.log(typeof oBooleanTrue); if(oBooleanFalse){ console.log("I an seriously truthy ,don't believe me"); } if(oBooleanTrue){ console.log("I am also truthy ,see?") }
// 使用valueOf()函数可以在布尔对象中提取到真正的值 if(oBooleanFalse.valueOf()){ console.log("With valueOf , I am false"); }else{ console.log("Without valueof,I am still truthy"); }
聪明的做法是避免使用Boolean构造函数来创建新的Boolean对象。
在js中创建Boolean类型的值有两种方法,
1. 将字面量true或false赋给变量:
var pBooleanTrue = true;
var pBooleanFalse = false;
2. 使用Boolean()函数。
var fBooleanTrue = Boolean(true);
var fBooleanFalse = Boolean(false);