js中tostring()函数与valueof()函数怎么使用-亚博电竞手机版

 js中tostring()函数与valueof()函数怎么使用

本篇内容介绍了“js中tostring()函数与valueof()函数怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、前言

在等于运算符中,如果比较的内容包含对象类型数据,则会涉及隐式转换,那么就会调用tostring()函数和valueof()函数。

二、tostring() 函数

tostring() 函数的作用是把一个逻辑值转换为字符串,并返回结果。

console.log((1).tostring());//1console.log((10).tostring(2))//1010console.log(("1").tostring());//1console.log((false).tostring());//falseconsole.log(({p:1}).tostring());//[object,object]console.log((undefined).tostring());//报错console.log((null).tostring());//报错console.log((function(){}).tostring());//function(){}console.log([1,2,3,4].tostring());//1,2,3,4console.log((newdate()).tostring())//frijul03202017:20:11gmt 0800(中国标准时间)

在javascript中,object,array,function,date等类型都实现了自定义的tostring()函数。

  • object 类型数据的 tostring() 函数默认的返回结果是 "[object object]",当我们自定义新的类时,可以重写 tostring() 函数,返回可读性更高的结果。

  • array 的 tostring() 函数返回值为以逗号分隔构成的数组成员字符串。数组也是对象,那么为什么数组返回的是对应的字符串而不是对象,其实数组覆盖了object.tostring方法,然后将连接数组并返回一个字符串,其中包含用逗号分隔的每个数组元素(相当于array.join())

  • function 的 tostring() 函数返回值为函数的文本定义

  • date 的 tostring() 函数返回值为具有可读性的时间字符串

三、valueof()函数

valueof() 函数的作用是返回最适合引用类型的原始值,如果没有原始值,则会返回引用类型自身。

console.log((1).valueof());//1console.log((10).valueof(2))//报错console.log(("1").valueof());//1console.log((false).valueof());//falseconsole.log(({p:1}).valueof());//{p:1}console.log((undefined).valueof());//报错console.log((null).valueof());//报错console.log((function(){}).valueof());//function(){}console.log([1,2,3,4].valueof());//[1,2,3,4]console.log((newdate()).valueof());//1593767848260

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

  • array 的valueof()函数返回的是数组本身

  • function 的valueof()函数返回的是函数本身

  • date 的valueof()函数返回的是指定日期的时间戳

小结:

  • tostring() 返回的是字符串,而 valueof() 返回的是原始值,没有原始值返回对象本身

  • undefined 和 null 都没有 tostring() 和 valueof() 方法

  • date 类型的 tostring() 返回的表示时间的字符串;valueof() 返回的是现在到1970年1月1日的毫秒数(时间戳)

  • number 类型的 tostring() 方法可以接收转换基数,返回不同进制的字符串形式的数值;而 valueof()方 法无法接受转换基数

四、特殊情况

如果一个引用类型的值既存在 tostring() 函数又存在 valueof() 函数,那么在做隐式转换时,会调用哪个函数呢?这里我们可以概括成两种场景,分别是引用类型转换为 string 类型,以及引用类型转换为 number 类型。

1、引用类型转换为 string 类型

一个引用类型的数据在转换为 string 类型时,一般是用于数据展示,转换时遵循以下规则:

  • 如果对象具有 tostring() 函数,则会优先调用 tostring() 函数。如果它返回的是一个原始值,则会直接将这个原始值转换为字符串表示,并返回该字符串。

  • 反之,则会再去调用 valueof() 函数,如果 valueof() 函数返回的结果是一个原始值,则会将这个结果转换为字符串表示,并返回该字符串。

  • 如果通过 tostring() 函数或者 valueof() 函数都无法获得一个原始值,则会直接抛出类型转换异常。

2、引用类型转换为 number 类型

一个引用类型的数据在转换为 number 类型时,一般是用于数据运算,转换时遵循以下规则:

  • 如果对象具有 valueof() 函数,则会优先调用 valueof() 函数,如果 valueof() 函数返回一个原始值,则会直接将这个原始值转换为数字表示,并返回该数字。

  • 反之,则会再去调用 tostring() 函数,如果 tostring() 函数返回的结果是一个原始值,则会将这个结果转换为数字表示,并返回该数字。

  • 如果通过 tostring() 函数或者 valueof() 函数都无法获得一个原始值,则会直接抛出类型转换异常。

“js中tostring()函数与valueof()函数怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注恰卡编程网网站,小编将为大家输出更多高质量的实用文章!

展开全文

js

内容来源于互联网和用户投稿,文章中一旦含有亚博电竞手机版的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系亚博电竞手机版删除

最新文章

网站地图