And*_*Mao 5 javascript datetime date type-conversion
在很久以前的数学课上,我被教导过
a == b 当且仅当 a <= b且b <= a时.
Javascript似乎不这么认为:
> new Date(400) <= new Date(400)
true
> new Date(400) >= new Date(400)
true
> new Date(400) == new Date(400)
false
Run Code Online (Sandbox Code Playgroud)
有人可以解释导致这种结果的类型强制规则吗?模糊等于运算符似乎==
应该相信两个Date
s具有相等的值.
首先让我们从您要比较的内容开始:
typeof new Date(400)
"object"
Run Code Online (Sandbox Code Playgroud)
Javascript 对象使用该方法.valueOf()
来比较前两种情况下的值。一般对象默认不知道如何进行比较,并使用字符串“[object Object]”。另一方面,日期知道如何做。
new Date(400) <= new Date(400)
new Date(400).valueOf() <= new Date(400).valueOf()
400 <= 400
true
Run Code Online (Sandbox Code Playgroud)
然而,最后一个操作对对象的定义不同,它比较两个对象(不是上面的整数)是否具有相同的引用,但它们不会,因为它们都是单独创建的新对象。
new Date(400) == new Date(400)
false
Run Code Online (Sandbox Code Playgroud)
如果您想以与前两个日期类似的方式比较日期值,则需要专门调用.valueOf()
.
new Date(400).valueOf() == new Date(400).valueOf()
true
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
257 次 |
最近记录: |