重磅推出3.0版本,valueOf()的全新3.0比较版本
更新内容,去除了枯燥的拆解流程,以目的实践为主,并且与tostring()目的相同对比
目的------取值!
valueOf()与toString()
两者的目的是相同的,区别于原理
前者返回原始值(全称原始类型的值------包括了数值,字符串,布尔),后者返回字符串
例子
javascript
let i = 718;
let z = "七月十八";
console.log(typeof i,typeof z);//输出number,string
console.log(typeof i.valueOf(),typeof i.toString());//输出number,string
console.log(typeof z.valueOf(),typeof z.toString());//string string
let arr =[1,2,3];
let obj ={name : "秋刀鱼",sex : "鱼"}
console.log(typeof arr,typeof obj);//object object
console.log(typeof arr.valueOf(),typeof arr.toString());//object string
console.log(typeof obj.valueOf(),typeof obj.toString());//object string
通过上面的例子你会发现,后者的tostring不管什么类型返回的都是字符型,而valueof()j就不会这样
上面的内容为第一点
第二点
使用限制
首先是valueOf(),如果对象,数组没有原始值(原始类型的值)那么就会返回本身
其次toString(),会发现,对象输出两个object字符串,而数组是内容
原因:这是toString()的一个机制,对obj的一个特殊的机制,是一个正常现象
PS:目前不做解决方案
javascript
let obj = {name :"秋刀鱼",Id :"1034"}
console.log(obj.valueOf());//输出{name: '秋刀鱼', Id: '1034'}
console.log(obj.toString());//[object Object]
let arr = ["抽刀","断水"];
console.log(arr.valueOf());//(2) ['抽刀', '断水']
console.log(arr.toString());//抽刀,断水
小结:
两个的目的的都是取值,但是没办法直接作用于对象,数组(数组tostring可以)
有一些内置对象是可以通过这个来输出的!例如date()