Я видел это в нескольких местах
function fn() {
return +new Date;
}
И я вижу, что он возвращает метку времени, а не объект даты, но я не могу найти документацию о том, что делает знак плюса.
Может ли кто-нибудь объяснить?
Я видел это в нескольких местах
function fn() {
return +new Date;
}
И я вижу, что он возвращает метку времени, а не объект даты, но я не могу найти документацию о том, что делает знак плюса.
Может ли кто-нибудь объяснить?
что + унарный оператор, эквивалентный:
function(){ return Number(new Date); }
JavaScript свободно набирается, поэтому он выполняет принуждение/преобразование типов при определенных обстоятельствах:
http://blog.jeremymartin.name/2008/03/understanding-loose-typing-in.html
http://www.jibbering.com/faq/faq_notes/type_convert.html
Другие примеры:
>>> +new Date()
1224589625406
>>> +"3"
3
>>> +true
1
>>> 3 == "3"
true
Ниже приведена спецификация относительно оператора унарного добавления. Надеюсь, это поможет...
Дата JavaScript может быть записана в виде строки:
Чт 10.10 2015 12:02:54 GMT + 0530 (IST)
или как число:
1441866774938
Даты, записанные как числа, определяют количество миллисекунд с 1 января 1970 года, 00:00:00.
Подойдя к вашему вопросу, он сглаживает это, добавляя '+' после оператора присваивания '=', преобразовывая Date в равное числовое значение.
то же самое можно достичь с помощью функции Number(), например Number (new Date());
var date = +new Date(); //same as 'var date =number(new Date());'
Это унарный оператор добавления и также используется для явного преобразования чисел, поэтому, когда вы вызываете +new Date()
, он пытается получить числовое значение этого объекта с помощью valueOf()
, как мы получаем строку из toString()
new Date().valueOf() == (+new Date) // true
Он делает то же самое, что:
function(){ return 0+new Date; }
который имеет тот же результат, что и:
function(){ return new Date().getTime(); }