数据类型转换

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函数。除了加法运算符有可能把运算子转为字符串,其他运算符都会把运算子自动转成数值。)
上一篇 下一篇

猜你喜欢

热点阅读