javaScript对象转换为原始值的过程

来源:互联网 发布:知乎 市川海老藏 编辑:程序博客网 时间:2024/06/05 03:16

javascript中对象到字符串的转换经历的过程如下:

  1. 如果对象具有toString()方法,javaScript会优先调用次方法。如果返回的是一个原始值(原始值包括null、undefined、布尔值、字符串、数字),javaScript会将这个原始值转换为字符串,并返回字符串作为结果。
  2. 如果对象不具有toString()方法,或者调用toString()方法返回的不是原始值,则javaScript会判断是否存在valueOf()方法,如若存在则调用此方法,如果返回的是原始值,javaScript会将原始值转换为字符串作为结果。
  3. 如果javaScript无法调用toString()和valueOf()返回原始值的时候,则会抱一个类型错误异常的警告。

javaScript中对象转换为数字的转换过程:

  1. javaScript优先判断对象是否具有valueOf()方法,如具有则调用,若返回一直原始值,javaScript会将原始值转换为数字并作为结果。
  2. 如果对象不具有valueOf()方法,javaScript则会调用toString()的方法,若返回的是原始值,javaScript会将原始值转换为数字并作为结果。
  3. 如果javaScript无法调用toString()和valueOf()返回原始值的时候,则会抱一个类型错误异常的警告。

下面解释一个例子:
将[](空数组)转换为数字的过程:

  1. 首先javaScript会将[]使用join()方法转换为字符串”“,
  2. 得到字符串”“,javaScript会将调用Number()函数”“转换为数字0(Number(“”) => 0),
  3. 所以[]转换为数字是0
0 0