JavaScript基本类型之Boolean

305 阅读2分钟

Boolean

布尔类型包括 true 与 false 两个值,开发中使用较多的数据类型。

声明定义

使用对象形式创建布尔类型

console.log(new Boolean(true)); //true
console.log(new Boolean(false)); //false

但建议使用字面量创建布尔类型

let hd =true;

隐式转换

基本上所有类型都可以隐式转换为 Boolean类型。

数据类型truefalse
String非空字符串空字符串
Number非0的数值0 、NaN
Array数组不参与比较时参与比较的空数组
Object所有对象
undefinedundefined
nullnull
NaNNaN

当与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;
}