Я читал некоторый исходный код и нашел это. почему +new Date() возвращает то же, что и новая Date(). getTime()? Каков механизм этого?
var date = new Date()
+data == date.getTime() // true
Это потому, что оператор унарного +
когда он используется для типов, отличных от строк, будет внутренне вызывать valueOf
. В случае даты она функционально эквивалентна Date.prototype.getTime
, поскольку обе выполняют ту же абстрактную операцию.
Date.prototype.valueOf
вызывается только тогда, когда значение является объектом даты, а не значением другого типа.
Оператор унарного +
преобразует операнд в число. В этом процессе date.valueOf
, который выполняет те же вычисления, что и date.getTime
.
date.valueOf()
возвращает то же значение