一、前言
二、示例
1、String转Boolean
2、Number转Boolean
3、NaN、Null、undefined 转Boolean
4、Object转Boolean
5、Array转Boolean
6、Symbol转Boolean
三、总结
四、思考
一、前言
JavaScript中,经常需要对一些值进行boolean判断,根据判断结果进一步实现不同的分支流程;
可以使用Boolean函数对这些值进行类型转换;
本文主要记录常用的数据类型做Boolean转换的结果;
二、示例
// 1、String转Boolean
console.log(Boolean("")); // false
console.log(Boolean("AAA")); // true
console.log(Boolean(" ")); // true// 2、Number转Boolean
console.log(Boolean(0)); // false
console.log(Boolean(1)); // true
console.log(Boolean(-1)); // true// 3、特殊值转Boolean
console.log(Boolean(null)); // false
console.log(Boolean(NaN)); // false
console.log(Boolean(undefined)); // false// 4、Object转Boolean
console.log(Boolean({})); // true
console.log(Boolean({ name: "Abc" })); // true// 5、Array转Boolean
console.log(Boolean([])); // true
console.log(Boolean([1, 2, 3])); // true// 6、Symbol转Boolean
console.log(Boolean(Symbol())); // true
console.log(Boolean(Symbol(""))); // true
console.log(Boolean(Symbol(0))); // true
console.log(Boolean(Symbol(null))); // true
console.log(Boolean(Symbol(undefined))); // true
console.log(Boolean(Symbol(NaN))); // true
1、String转Boolean
注意:
长度非0的空字符串,做Boolean转换的结果为true;
字符串做Boolean转换前先使用trim()方法,移除字符串两侧的空白字符;
2、Number转Boolean
数值型只有0的Boolean转换为false;
NaN的Boolean转换为false;
3、NaN、Null、undefined 转Boolean
NaN、Null、undefined做Boolean转换均为false;
4、Object转Boolean
对象类型的值做Boolean转换,结果均为true;
注意:空对象的Boolean转换值为true;
5、Array转Boolean
数组类型的值做Boolean转换,结果均为true;
注意:空数组的Boolean转换值为true;
6、Symbol转Boolean
Symbol类型的值做Boolean转换,结果均为true;
三、总结
- String类型的值,只有长度为0的空串,Boolean转换结果为false,其他均为true;
- Number类型的值,只有0的Boolean转换结果为false,其他均为true;
- NaN、null、undefined,Boolean转换结果均为false;
- Object类型的值,Boolean转换结果均为true(包括空对象{});
- Array类型的值,Boolean转换结果均为true(包括空数组[]);
- 使用Symbol()创建的任何值,Boolean转换结果均为true;
四、思考
1、问题
曾经遇到过这样一个有趣的问题:
问题1: 1 == '1'
问题2: 1 === '1'
这两个表达式的结果是什么?为什么?
2、说明
这个问题就是涉及到类型转换的相关内容:
“ == ” 号,表示先做类型转换,在做比较;
“ === ” 号,表示先比较类型,再比较值;
3、解析
(1)对于问题1:
1(Number型),Boolean转换结果为true;
'1' (String型),Boolean转换结果为true;
即可转换为 true == true,显然是成立的,因此比较结果为true;
(2)对于问题2:
1,为Number型,'1' ,为String型;
两者类型不同,直接返回false;
若两者类型相同,才会继续做值的比较;
4、验证
=======================================================================
每天进步一点点,记录一下这个有用的小知识~!