天天看点

toString和valueOf

文章目录

  • ​​toString()​​
  • ​​valueOf()​​

在JavaScript中,toString和valueOf用来解决值的显示和运算问题的。

toString()

toString函数的作用是把一个逻辑值转为字符串,并且返回。比如​

​[1,2,3,4,5].toString()​

​结果为‘1,2,3,4,5’。

function的toString()结果是函数的文本定义,比如:

(function(x){return x *2;}).toString(); 
//'function(x){return x *2;}'      

另一个常见的Date类型,new Date().toString()结果为’Sun Sep 11 2022 15:22:05 GMT+0800 (中国标准时间)’

Object类型数据的toString()方法,返回的结果是’[object Object]’

valueOf()

valueOf函数是用来返回最适合引用类型的原始值。如果没有原始值,就返回引用类型本身。

Object类型数据的valueOf()函数默认返回结果是"{}",一个空的对象字面量。

Array的valueOf方法返回的是array本身。比如:​

​[1,2,4].valueOf()​

​结果为 [1, 2, 4];

function的valueOf()返回的也是函数本身;

Date的valueOf(),返回的是指定日期的时间戳,比如:new Date().valueOf(),结果为1662881283445

  1. 引用类型转换为string类型: 当引用类型转换为string类型的时候,一般是用来展示数据,所以:
  1. 如果对象具有toString函数,那么优先调用toString函数,如果返回值是原始数据类型,则直接将返回值转换为字符串并且返回。
  2. 如果对象没有toString函数或者是toString返回值不是一个原始数据类型,则会调用valueOf()函数,如果valueOf返回值是一个原始数据类型,就将该返回值转换为字符串,否则返回类型转换异常。
  1. 引用类型转换为Number类型的时候,一般是用来进行运算的,所以:
  1. 如果对象具有valueOf方法,则会调用valueOf方法,如果valueOf返回值是原始数据类型,则将返回值转换为number并且返回
  2. 如果对象没有valueOf或者是valueOf方法返回的值不是原始数据类型,那么会调用toString方法,如果toString方法的返回值是原始数据类型,那么返回值转换为数字并且返回数字。
  3. 如果valueOf()和toString都不能获取到一个原始数据类型的值,就抛出类型转换异常。