+new Date() 和 1*new Date() 的区别

3
谷歌分析嵌入代码使用1*new Date()获取当前时间戳,这似乎比我期望用于此目的的+new Date()多一个字符长度,特别是考虑到谷歌分析嵌入代码是经过彻底压缩的。我查看了ES5规范,看起来应该是一样的:一元加运算符应用ToNumber(GetValue(expr))并返回它,乘法将ToNumber(GetValue(expr))应用于两侧并将它们相乘。是否有JavaScript环境(也许是一些旧浏览器?)会为+new Date()1*new Date()产生不同的结果?
1个回答

4

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

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

这假设所示表达式是完整的,因为有点容易“意外地”将一元+转换为中缀而没有语法错误;中缀+可能会不希望地导致字符串连接。现在,我只使用Date.now()(ES5,在其他地方模拟)虽然我曾经使用过(+new Date)


是的。完整表达式为 i[r].l=1*new Date() - dottedmag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接