使用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);