+new Date() 和 1*new Date() 的区别
Difference between +new Date() and 1*new Date()
Google Analytics 片段使用 1*new Date()
获取当前时间戳,这似乎比 +new Date()
长一个字符,我希望将其用于此目的,尤其是考虑到说明 GA 代码段的缩小程度。
我查看了 ES5 规范,它看起来应该是相同的:一元加号应用 ToNumber(GetValue(expr))
和 returns 它,乘法应用
ToNumber(GetValue(expr))
两边相乘。
是否有 JavaScript 环境(可能是某些旧浏览器?)会为 +new Date()
和 1*new Date()
产生不同的结果?
没有语义差异;在所有 JavaScript 实现中,两者都会 return 相同的值。
如前所述,这是因为转换发生在 [ToNumber] 上,它同样适用于一元 +
和中缀 *
操作数。
这假定显示的表达式是完整的,因为它有点容易 'accidentally' 将一元 +
转换为中缀而没有语法错误;中缀 +
可能会意外地导致字符串连接。这些天我只使用 Date.now()
(ES5,在其他地方填充),尽管我以前使用 (+new Date)
.
Google Analytics 片段使用 1*new Date()
获取当前时间戳,这似乎比 +new Date()
长一个字符,我希望将其用于此目的,尤其是考虑到说明 GA 代码段的缩小程度。
我查看了 ES5 规范,它看起来应该是相同的:一元加号应用 ToNumber(GetValue(expr))
和 returns 它,乘法应用
ToNumber(GetValue(expr))
两边相乘。
是否有 JavaScript 环境(可能是某些旧浏览器?)会为 +new Date()
和 1*new Date()
产生不同的结果?
没有语义差异;在所有 JavaScript 实现中,两者都会 return 相同的值。
如前所述,这是因为转换发生在 [ToNumber] 上,它同样适用于一元 +
和中缀 *
操作数。
这假定显示的表达式是完整的,因为它有点容易 'accidentally' 将一元 +
转换为中缀而没有语法错误;中缀 +
可能会意外地导致字符串连接。这些天我只使用 Date.now()
(ES5,在其他地方填充),尽管我以前使用 (+new Date)
.