JS的类型转换
说明: JS对自己所需要的值的类型非常灵活., JS需要一个布尔值,但是可能提供了其他类型的值,JS会根据需要转换为这个值
例子
10 + 'objects' // '10 objects' 数值1-转换为字符串
'7' * '4' // 28 两个字符串转换为数值
let n = 1 - 'x' // n == NaN 字符串'x': 无法转换为数值
n + 'objects' // 'NaN + objects': NaN 转换为字符串 'NaN'
总结
下表总结了JS中类型之间的转换关系,表中加粗的内容可能让人觉得意外的转换目标. 空单元格表示没有转换必要, 因此什么操作也不会发生
值 | 转换为字符串 | 转换为数值 | 转换为布尔值 |
---|---|---|---|
undefined | “undefined” | NaN | false |
null | “null” | 0 | false |
true | “true” | 1 | |
false | “false” | 0 | |
‘’(空字符串) | 0 | false | |
‘1.2’(非空,数值) | 1.2 | true | |
‘one’(非空,非数值) | NaN | true | |
0 | “0” | false | |
-0 | “0” | false | |
1(有限,非零) | “1” | true | |
Infinity | “Infinity” | true | |
-Infinity | “-Infinity” | true | |
NaN | “NaN” | false | |
{}(任何对象) | “[object Object]” | true | |
[] (空数组) | “” | 0 | true |
[9] (一个数值元素) | “9” | 9 | true |
[‘a’] (任何其他数组) | 使用join()方法 | NaN | true |
Function(){} | 转换见下面代码块 | NaN | true |
(function(x){f(x)};).toString() // "function(x){f(x)};"
["a", "b"].toString() // "a,b"