JavaScript类型转换表格
值 | 转换为 | |||
字符串 | 数字 | 布尔值 | 对象 | |
undefined | "undefined" | NaN | false | throw TypeError |
null | "null" | 0 | false | throw TypeError |
true | "true" | 1 | new Boolean(true) | |
false | "false" | 0 | new Boolean(false) | |
""(空字符串) | 0 | false | new String("") | |
"1.2"(非空,数字) | 1.2 | true | new String("1.2") | |
"one"(非空,非数字) | NaN | true | new String("one") | |
0 | "0" | false | new Number(0) | |
-0 | "0" | false | new Number(-0) | |
NaN | "NaN" | false | new Number(NaN) | |
Infinity | "Infinity" | true | new Number(Infinity) | |
-Infinity | "-Infinity" | true | new Number(-Infinity) | |
1(无穷大,非零) | "1" | true | new Number(1) | |
{}(任意对象) | -- | -- | true | |
[](任意数组) | "" | 0 | true | |
[9](1个数字元素) | "9" | 9 | true | |
['a'](其他数组) | 使用join()方法 | NaN | true | |
function(){}(任意函数) | -- | NaN | true |
由于JavaScript可以做灵活的类型转换,因此”==“运算符也灵活多变:
null == undefined //true,可以参考上表,在比较之前null转换为false,undefined转换为false,所以相等
"0" == 0 //true,在比较之前将字符串转为数字
0 == false //true,在比较之前将布尔值转为数字
"0" == false //true,在比较之前将字符串和布尔值都转为数字