JS数据类型转换

开篇一张图,剩下全靠编。

image

上图来自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()方法。再不行便是抛错。

你可能感兴趣的:(JS数据类型转换)