《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方法,最后抛出异常。

posted @ 2018-08-31 15:43  jeffmeoi  阅读(77)  评论(0)    收藏  举报