开篇一张图,剩下全靠编。
上图来自JavaScript权威指南,可以说是几乎把所有的类型转换相关的问题都列出来了。
下面是我从书中以及其他资料总结出的一些规律。
任意JavaScript的值都可以转换成布尔值,
undefined null -0 0 NaN ""
会被转换成false,除此之外包括对象(数组)的其他值都会被转换成true。原始值转字符串直接在原值的基础上加上引号。
以数字表示的字符串可以直接转换为数字,且该字符串前后可以有空格;前后有任意非数字字符会导致转换结果为NaN。
奇怪但只能记住的转换:
Number(true) Number(false) Number("")
的值分别为1 0 0。原始值通过调用String() Number() Boolean() 函数可以转换为他们各自的包装对象。
undefined和null转为对象会造成类型错误。
除undefined和null外的任何值都具有toString()方法,这个方法的执行结果通常和String()方法的返回结果一致。
如果“ + ”运算符的一个操作数是字符串,他将会把另一个操作数转换为字符串。
一元“ + ”运算符将其操作符转换为数字。
一元“ ! ”运算符将其操作数转换为布尔值并取反
-
一些例子:
x + " " //等价于String(x)
+x //等价于Number(x),也可以写成x-0
!!X //等价于 Boolean(x),注意是双叹号
对象转为字符串和数字,简单来讲通过toString() valueOf() 就可以完成。首先使用toString()方法,如果没有得到期望的结果,再更换使用valueOf()方法。再不行便是抛错。