JavaScript中对象到字符串、数字的转换过程

JavaScript中对象到字符串的转换经过了如下步骤:

  • 如果对象中有toString()方法,则调用这个方法。如果它返回一个原始值,js将这个值转换为字符串(如果本身不是字符串的话),并返回这个字符串结果。
  • 如果对象没有toString()方法,或者toString()并不返回一个原始值,那么js会调用valueOf()方法。如果返回值是原始值,js将这个值转换为字符串,并返回字符串结果。
  • 否则,js抛出一个类型错误异常。
    JavaScript中对象到字符串、数字的转换过程

JavaScript中对象到数字的转换经过了如下步骤:
和上面有点不同,到数字的转换会先尝试使用valueOf()方法

  • 如果对象具有valueOf()方法,后者返回一个原始值,则js会将其转换为数字(如果需要的话)并返回这个数字。
  • 否则,如果对象具有toString()方法,返回一个原始值(字符串直接量),则js将其转换为数字类型,并返回这个数字。
  • 否则,js抛出一个类型错误异常。