Boolean
布尔类型包括 true 与 false 两个值,开发中使用较多的数据类型。
声明定义
使用对象形式创建布尔类型
console.log(new Boolean(true)); //true
console.log(new Boolean(false)); //false
但建议使用字面量创建布尔类型
let hd =true;
隐式转换
基本上所有类型都可以隐式转换为 Boolean类型。
| 数据类型 | true | false |
|---|---|---|
| String | 非空字符串 | 空字符串 |
| Number | 非0的数值 | 0 、NaN |
| Array | 数组不参与比较时 | 参与比较的空数组 |
| Object | 所有对象 | |
| undefined | 无 | undefined |
| null | 无 | null |
| NaN | 无 | NaN |
当与boolean类型比较时,会将两边类型统一为数字1或0。
如果使用Boolean与数值比较时,会进行隐式类型转换 true转为1,false 转为0。
console.log(3 == true); //false
console.log(0 == false); //true
下面是一个典型的例子,字符串在与Boolean比较时,两边都为转换为数值类型后再进行比较。
console.log(Number("houdunren")); //NaN
console.log(Boolean("houdunren")); //true
console.log("houdunren" == true); //false
console.log("1" == true); //true
数组的表现与字符串原理一样,会先转换为数值
console.log(Number([])); //0
console.log(Number([3])); //3
console.log(Number([1, 2, 3])); //NaN
console.log([] == false); //true
console.log([1] == true); //true
console.log([1, 2, 3] == true); //false
引用类型的Boolean值为真,如对象和数组
if ([]) console.log("true");
if ({}) console.log("true");
显式转换
使用 !! 转换布尔类型
let hd = '';
console.log(!!hd); //false
hd = 0;
console.log(!!hd); //false
hd = null;
console.log(!!hd); //false
hd = new Date("2020-2-22 10:33");
console.log(!!hd); //true
使用 Boolean 函数可以显式转换为布尔类型
let hd = '';
console.log(Boolean(hd)); //false
hd = 0;
console.log(Boolean(hd)); //false
hd = null;
console.log(Boolean(hd)); //false
hd = new Date("2020-2-22 10:33");
console.log(Boolean(hd)); //true
实例操作
下面使用Boolean类型判断用户的输入,并给出不同的反馈。
while (true) {
let n = prompt("请输入后盾人成立年份").trim();
if (!n) continue;
alert(n == 2010 ? "回答正确" : "答案错误!看看官网了解下");
break;
}