今天发现一个神奇的现象,效果如下:
date
是一个对象,但是把这个对象和一个字符串相加的时候,却能得到日期字符串;把这个对象和数字相减,却能得到时间戳(毫秒数);也就是date
与字符串、数字进行运算时,会转成对应的类型。
其实造成以上现象的本质原因是:js
为了让两种不同类型的值进行运算或比较,会在运算前对他们进行转换,其实就是通过调用他们的toString()
或者是valueOf()
来得到转换后的值,然后再对转换后的值进行运算或者比较。
我们可以看一下,常用的几种数据类型的valueOf()
的返回值是什么。
1.数组
数组的
valueOf
返回的是一个对象,也是原对象本身。
2.Date
Date
的valueOf
的返回值是时间的毫秒数。
3.N