数据类型转换
2017-02-27 本文已影响0人
尘满面鬓微霜
Number()
使用Number函数,可以将任意类型的值转化成数值。下面分成两种情况讨论,一种是参数是原始类型的值,另一种是参数是对象。
- 调用对象自身的valueOf方法。如果返回原始类型的值,则直接对该值使用Number函数,不再进行后续步骤。
- 如果valueOf方法返回的还是对象,则改为调用对象自身的toString方法。如果返回原始类型的值,则对该值使用Number函数,不再进行后续步骤。
- 如果toString方法返回的是对象,就报错。
String()
使用String函数,可以将任意类型的值转化成字符串。转换规则如下。
- 数值:转为相应的字符串。
- 字符串:转换后还是原来的值。
- 布尔值:true转为"true",false转为"false"。
- undefined:转为"undefined"。
- 数值:转为相应的字符串。
对象的转换规则
- 先调用对象自身的toString方法。如果返回原始类型的值,则对该值使用String函数,不再进行以下步骤。
- 如果toString方法返回的是对象,再调用valueOf方法。如果返回原始类型的值,则对该值使用String函数,不再进行以下步骤。
- 如果valueOf方法返回的是对象,就报错。
Boolean()
使用Boolean函数,可以将任意类型的变量转为布尔值。它的转换规则相对简单:除了以下六个值的转换结果为false,其他的值全部为true。
- undefined
- null
- -0,0或+0
- NaN
- ''(空字符串)
自动转换
- 自动转换为布尔值。(当JavaScript遇到预期为布尔值的地方(比如if语句的条件部分),就会将非布尔值的参数自动转换为布尔值。系统内部会自动调用Boolean函数。)
- 自动转换为字符串。(系统内部会自动调用String函数。字符串的自动转换,主要发生在加法运算时。当一个值为字符串,另一个值为非字符串,则后者转为字符串。)
- 自动转换为数值。(系统内部会自动调用Number函数。除了加法运算符有可能把运算子转为字符串,其他运算符都会把运算子自动转成数值。)