javascript - JavaScript Date 对象通过算术运算符的转换不一致

标签 javascript

什么 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/

相关文章:

javascript - require.js - 无法加载任何其他模块

javascript - 如何计算 double 值的有用上限和下限?

javascript - 我的 ajax 调用没有给出任何错误和响应

javascript - 在文本开头或结尾时使用键盘箭头导航到下一个文本元素

javascript - 如何使用 Firebase Analytics 从 SPA(单页应用程序)网络应用程序发送 page_view 事件?

javascript - 我需要使用 angularJS 将对象添加到数组中

javascript - 您如何使用方法绑定(bind)和 url 将任何 src 图像从一侧复制到另一侧?

javascript - 段落中某个单词的正则表达式

javascript - ios 上的音频无法正常工作,仅第一次可以工作

javascript - 如何比较nodejs中的两个数组