Что означает знак плюса в '+ new Date'

Я видел это на нескольких страницах places

function fn() {
    return +new Date;
}

И я 9X_syntax вижу, что он возвращает метку времени, а 9X_javascript-execution не объект даты, но я не могу найти никакой 9X_.js документации о том, что делает знак плюса.

Кто-нибудь 9X_javascript-dom может объяснить?

255
0
6
Общее количество ответов: 6

Ответ #1

Ответ на вопрос: Что означает знак плюса в '+ new Date'

это унарный оператор +, он эквивалентен:

function(){ return Number(new Date); }

см 9X_javascript .: http://xkr.us/articles/javascript/unary-add/

и в MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus

313
6

  • На всякий случай: `+ ...

Ответ #2

Ответ на вопрос: Что означает знак плюса в '+ new Date'

Типизация JavaScript слабо типизирована, поэтому 9X_vanilla-js при определенных обстоятельствах он выполняет 9X_.js приведение / преобразование типов:

http://blog.jeremymartin.name/2008/03/understanding-loose-typing-in.html
http://www.jibbering.com/faq/faq_notes/type_convert.html

Другие 9X_js примеры:

>>> +new Date()
1224589625406
>>> +"3"
3
>>> +true
1
>>> 3 == "3"
true

44
0

Ответ #3

Ответ на вопрос: Что означает знак плюса в '+ new Date'

Вот specification относительно оператора "унарного 9X_.js добавления". Надеюсь, это поможет ...

6
0

Ответ #4

Ответ на вопрос: Что означает знак плюса в '+ new Date'

Дата JavaScript может быть записана в виде 9X_javascript строки:

Чт, 10 сентября 2015 г., 12:02:54 9X_javascript-dom GMT + 0530 (IST)

или в виде числа:

1441866774938

Даты, записанные 9X_javascript-dom в виде чисел, определяют количество миллисекунд 9X_syntax с 1 января 1970 г., 00:00:00.

Переходя к 9X_ecmascript вашему вопросу, кажется, что добавлением 9X_ecmascript знака "+" после оператора присваивания "=" преобразование 9X_vanilla-js даты в равное числовое значение.

того же 9X_ecmascript можно добиться с помощью функции Number(), например 9X_vanilla-js Number (new Date());

var date = +new Date(); //same as 'var date =number(new Date());'

6
0

Ответ #5

Ответ на вопрос: Что означает знак плюса в '+ new Date'

Просто чтобы дать дополнительную информацию:

Если 9X_vanillajs вы помните, когда вы хотите найти разницу 9X_vanilla-javascript во времени между двумя датами, вы просто 9X_vanillajs делаете следующее:

var d1 = new Date("2000/01/01 00:00:00"); 
var d2 = new Date("2000/01/01 00:00:01");  //one second later

var t = d2 - d1; //will be 1000 (msec) = 1 sec

typeof t; // "number"

Теперь, если вы проверите 9X_js тип d1-0, это тоже число:

t = new Date() - 0; //numeric value of Date: number of msec's since 1 Jan 1970.
typeof t; // "number"

этот + также преобразует 9X_vanillajs дату в число:

typeof (+new Date()) //"number"

Но учтите, что 0 + new Date() не будет обрабатываться 9X_vanillajs аналогичным образом! он будет объединен 9X_.js как строка:

0 + new Date() // "0Tue Oct 16 05:03:24 PDT 2018"

3
0

Ответ #6

Ответ на вопрос: Что означает знак плюса в '+ new Date'

Это оператор унарного добавления, который также используется 9X_javascript-disabled для явного преобразования чисел, поэтому, когда 9X_javascript-library вы вызываете +new Date(), он пытается получить числовое 9X_js значение этого объекта с помощью valueOf(), как мы 9X_.js получаем строку из toString()

new Date().valueOf() == (+new Date)  // true

2
0