值 | 转换为 字符串 | 转换为 数字 | 转换为 布尔值 | 转换为 对象 |
---|---|---|---|---|
undefined | “undefined” | NaN | false | throws TypeError |
null | “null” | 0 | false | throws 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 |
字符串转换为数字
- 以数字表示的字符串可以转换为数字,允许在开始和结尾处带有空格。
- 但在开始和结尾处的任意空格都不会被当成数字直接量的一部分,进而造成字符串转换为数字的结果为NaN.
转换和相等性
下面的比较结果均是true:
null == undefined // 这两值被认为相等
"0" == 0 // 在比较之前字符串转换成数字
0 == false // 在比较之前布尔值转换成数字
"0" == false // 在比较之前字符串和布尔值都转换成数字
Notes:
- 一个值转换为另一个值并不意味着两个值相等。
"=="运算符从不试图将其操作数转换为布尔值undefined == false // false
- “===“恒等运算符在判断相等时不做任何类型变换