2015-10-05 70 views
3

Google Analytics代码段使用1*new Date()获取当前时间戳,该时间戳看起来比我预期用于此目的的+new Date()长一个字符,尤其是涉及说明如何彻底缩小GA片段。+新日期()和1 *新日期()之间的差异

我看了一下ES5规范,它看起来像它应该是相同的:一元加适用ToNumber(GetValue(expr))并将其返回,乘适用 ToNumber(GetValue(expr))双方和它们相乘。

是否有一个JavaScript环境(可能是一些旧的浏览器?),它产生不同的结果+new Date()1*new Date()

回答

4

没有语义上的差异;两者都将在所有JavaScript实现中返回相同的值。

如已经确定的那样,这是因为转换发生在[ToNumber],其同样适用于一元+和中缀*操作数。

这里假设表达式是完整的,因为在意外情况下将一元+变成没有语法错误的中缀是很容易的;并且中缀+可能会不期望地导致字符串连接。这几天我只用Date.now()(ES5,在其他地方擦过),虽然我以前用过(+new Date)

+0

它是。完整表达式是'i [r] .l = 1 * new Date()' – dottedmag