一:布尔可以是对象
通常 JavaScript 布尔是由字面量创建的原始值:
var x = false
但是布尔也可以通过关键词 new 作为对象来定义:
var y = new Boolean(false)
举例:
var x = false;
var y = new Boolean(false);
// typeof x 返回 boolean
// typeof y 返回 object
注意点:
- 不要创建布尔对象。它会拖慢执行速度。
- new 关键词会使代码复杂化,并产生某些意想不到的结果
当使用 == 运算符时,相等的布尔是相等的:
var x = false;
var y = new Boolean(false);
// (x == y) 为 true,因为 x 和 y 拥有相等的值
当使用 === 运算符时,相等的布尔是不相等的,因为 === 运算符需要在类型和值两方面同时相等:
var x = false;
var y = new Boolean(false);
// (x === y) 为 false,因为 x 和 y 的类型不同
特别注意:
- 比较两个 JavaScript 对象将始终返回 false。
二:所有不具有“真实”值的即为false
0(零)的布尔值为 false:
var x = 0;
Boolean(x); // 返回 false
-0 (负零)的布尔值为 false:
var x = -0;
Boolean(x); // 返回 false
“”(空值)的布尔值为 false:
var x = "";
Boolean(x); // 返回 false
undefined 的布尔值是 false:
var x;
Boolean(x); // 返回 false
null 的布尔值是 false:
var x = null;
Boolean(x); // 返回 false
false 的布尔值(正如您猜到的)是 false:
var x = false;
Boolean(x); // 返回 false
NaN 的布尔值是 false:
var x = 10 / "H";
Boolean(x); // 返回 false
三:if else判断简洁写法
之前写法:
if(!foo){
foo = bar;
}
新颖写法:
foo = foo || bar
foo 为false时把bar赋值给foo