显示转换
在 JS 中类型转换只有三种情况,分别是:
1、转换为布尔值(调用Boolean()方法)
2、转换为数字(调用Number()、parseInt()和parseFloat()方法)
3、转换为字符串(调用.toString()或者String()方法)
64.jpg
(undefined转数字为NaN)
使用Boolean(value)方法可以强制转换任意值为boolean类型,除了以下六个值,其他都是自动转为true:
undefined
null
-0
+0
NaN
‘’(空字符串)
Boolean(undefined) // false
Boolean(null) // false
Boolean(0) // false
Boolean(NaN) // false
Boolean('') // false
隐式转换
33.png当两个不同类型的数据进行抽象比较(==)时,JS会将它们先转换成统一数据类型,低层级的数据类型向高层级的数据类型转换,直到“==”左右两边数据类型相同,然后比较数据的值是否相同。
举个例子:
1、数字遇上字符串:字符串→数字
1 == '1' //true
2、数字遇上布尔:布尔→数字
0 == false //true
3、数字遇上对象:对象→数字
0 == [0] //true
4、字符串遇上布尔:字符串→数字,布尔→数字
"" === false //true
"0" === false //true "0" → 0,false → 0
5、字符串遇上对象:对象→字符串
[1, 2, 3] == '1,2,3' //true
6、布尔遇上对象:
[0] == false //true [0] → "0" → 0, false → 0
[] == false //true [] → "0" → 0, false → 0
![] == false //true
![] == false //false
undefined == false //false
null == false //false
undefined == null //true
注意:
1、![] == false为true是因为 ! 会将 [] 直接转换成Boolean,在JS中,将其他数据类型转换成Boolean时,只有空字符串("")、0、null、undefined、NaN会转换成false,其他数据都会转换成true,所以空数组([])会被转换成true,![]为false,!![]为true
2、undefined和null与任何有意义的值比较返回的都是false,但是null与undefined之间互相比较返回的是true。
网友评论