《JavaScript权威指南》读书笔记(5)-类型转换
JavaScript类型转换
自动类型转换表
| 值 | 字符串 | 数字 | 布尔值 | 对象 |
|---|---|---|---|---|
| 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] | “9” | 9 | true | |
| [‘a’] | 使用join()方法连接各个元素,分隔符为逗号 | NaN | true | |
| function(){} | 待讨论 | NaN | true |
显式类型转换
Number("3"); //当参数为字符串时,会把前后的空格去除,如果前后的空格去除之后仍不是数字,则会返回NaN。
String(false); //与.toString()方法作用一样
Boolean([]);
Object(3);
parseInt("123"); //返回整数,存在一个可选参数,指定数字转换的基数(2-36)
parseFloat("123.456") //返回浮点数或整数,会忽略任意的前导空格,尽可能解析更多的数值字符
//Ps:前面不能有new。前面无new的情况下,为类型转换函数,是全局函数。前面有new的情况下是新建一个对象,eg.new Number("123");的作用是新建一个对象Number,且数值为123。
相关
toString()和valueOf()方法
默认的valueOf方法简单地返回对象本身。
toString方法不赘述。
在JavaScript中,对象到字符串的隐式转换经历过程如下:
- 如果有toString方法则调用toString方法,若返回原始值,则将该原始值转换为字符串。
- 如果没有toString方法或者调用toString不返回原始值,则调用valueOf方法,如果返回值是原始值,则将该原始值转换为字符串。
- 如果仍然得不到原始值,则抛出类型错误异常。
而在对象转数字的隐式转换过程中,类似上面的过程。只不过是先调用valueOf,再调用toString方法,最后抛出异常。

浙公网安备 33010602011771号