什么 Javascript 语言规则会导致以下转换怪异?
new Date() - 2 => number
new Date() * 2 => number
new Date() / 2 => number
但是
new Date() + 2 => string
我原以为 + 运算符会使用 Date
对象的 valueOf()
方法将其转换为数字。就像下面的例子一样:
{valueOf: function() {return 1;}} + 2 => number
日期
有什么不同?
最佳答案
当你尝试做
new Date() + 2
您正在执行字符串连接(因此 new Date()
返回 Date
对象的字符串表示形式,相当于 (new Date()) .toString()
),
在其他情况下,您使用算术运算符(在这种情况下,new Date()
返回“Epoch”中的毫秒)
要具有“一致”行为,只需使用 +(new Date())
进行类型强制,以便
+(new Date()) - 2 => number
+(new Date()) * 2 => number
+(new Date()) / 2 => number
+(new Date()) + 2 => number
关于javascript - JavaScript Date 对象通过算术运算符的转换不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12599662/