2015-10-05 2 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], которое в равной степени относится к унарным + и операндам infix *.

Это предполагает, что показанное выражение завершено, поскольку несколько легко «случайно» превратить унарный + в инфикс без синтаксической ошибки; и infix + может нежелательно привести к конкатенации строк. В эти дни я просто использую Date.now() (ES5, прорезь в другом месте), хотя я использовал (+new Date).

+0

Это так. Полное выражение: 'i [r] .l = 1 * new Date()' – dottedmag

Смежные вопросы