Что означает + в этой дате Шим? - PullRequest
1 голос
/ 21 февраля 2012

Просто столкнулся с Date.now и задавался вопросом, что означает + в + (новая дата).

if (!Date.now) {  
  Date.now = function now() {  
    return +(new Date);  
  };  
}  

Ответы [ 4 ]

2 голосов
/ 21 февраля 2012

Преобразует дату в число.

Дата в виде числа - это количество миллисекунд с 1 января 1970 года (также называемое временем Unix).Естественно, именно это и должно вернуть Date.now().

2 голосов
/ 21 февраля 2012

Это унарный оператор плюс . Он преобразует свой операнд в число. От MDN:

Унарный оператор плюс предшествует своему операнду и вычисляет его операнд, но пытается преобразовать его в число, если это не так уже. Например, y = + x принимает значение x и присваивает его у; то есть, если бы х было 3, у получило бы значение 3 и х сохранило бы значение 3; но если бы х был строкой "3", у также получило бы значение 3.

В этом случае, поскольку операндом является дата, число будет равняться миллисекундам с полуночи 1 января 1970 года.

По сути, это то же самое, что и письмо:

Number(new Date());
1 голос
/ 21 февраля 2012

Он просто конвертирует дату в число, число будет количеством миллисекунд с начала эпохи.Из спецификации ECMAScript:

11.4.6 Унарный + оператор
Унарный оператор + преобразует свой операнд в числовой тип.Производство UnaryExpression: + UnaryExpression оценивается следующим образом: 1. Оценить UnaryExpression.2. Вызвать GetValue (Результат (1)).3. Вызвать ToNumber (Результат (2)).4. Вернуть результат (3).

0 голосов
/ 21 февраля 2012

унарный оператор + преобразует тип своего операнда в число, и, поскольку он не выполняет никаких дополнительных математических операций, это самый быстрый метод для преобразования типа в число.Так вот что он делает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...