前面的话
当 Number、String、Boolean使用new操作符时,它们就不仅仅是基本类型了,变成了基本的包装类型,即引用类型。Boolean类型应该算是这三种类型中最简单的类型,这篇文章将介绍Boolean类型。
定义
Boolean类型只有两个字面量值:true、false。这两个值与数字值不是一回事,所以,true不一定等于1,false不一定等于0.
Boolean包装类型是与布尔值对应的引用类型。
var b1 = true;
var b2 = new Boolean(true);
console.log(b1, typeof b1); // true "boolean"
console.log(b2, typeof b2); // Boolean "object"
应用场景
- 条件与循环语句:
var message = "hello world";
if(message) {
alert('Value is true');
}
上面的示例中,会弹出一个警告框。因为在if语句中的message自动转为了对应的Boolean值true。
- 布尔操作符
逻辑操作符也叫布尔操作符,共有三种:与(&&)、或(||)、非(!)。
逻辑非操作符:首先会将它的操作数换为布尔值,再对其求反。最终得到的是操作数对应相反的布尔值。
而同时使用两个逻辑非操作符(!!),将操作数转为对象的布尔值。
console.log(!!"true");
console.log(!! 0);
console.log(!! NaN);
console.log(!! "");
console.log(!! " ");
- 关系运算符
小于(<)、小于等于(<=)、大于(>)、大于等于(>=)这几个关系操作符用于对两个值进行比较。最终返回 一个布尔值。
var result1 = 5 > 3;
var result2 = 5 < 3;
console.log(result1, typeof result1);
console.log(result2, typeof result2);
转型函数Boolean()
对任何数据类型的值调用Boolean()函数,总会返回一个Boolean值。
假值:
转换为false的值称为假值。包括这7个
- false
+ null
+ undefined
+ NaN
- “”
+ 0
+ -0
console.log(Boolean(false));
console.log(Boolean(undefined));
console.log(Boolean(null));
console.log(Boolean(NaN));
console.log(Boolean(''));
console.log(Boolean(0));
console.log(Boolean(-0));
[注意] :在Number()方法中空字符串与空白字符串都转为0,而在Boolean方法中,空字符串转为false,而空白字符串转为true
console.log(Number(''));// 0
console.log(Number(' '));// 0
console.log(Boolean(''));// false
console.log(Boolean(' '))// true
除了上述这7个假值以外,其他的值都转为true。包括空对象{}、空数组[]等。
实例方法
Boolean类型的实例重写了Object对象的通用方法toString()、toLocaleString()、toValue()这三个方法。
[toString()]
toString()方法返回Boolean的字符串(‘true’或’false’)
[toLocaleString()]
toLocaleString()方法返回Boolean的字符串(‘true’或’false’)
[valueOf()]
valueOf()方法返回原始的布尔值(true或false)
var result = new Boolean(false);
console.log(result.toString());// "false"
console.log(result.toLocaleString());// "false"
console.log(result.valueOf());// false
[注意]:理解基本类型的布尔值与Boolean对象之间的区别非常重要 —— 但建议永远也不要使用Boolean对象