Я бачив це в кількох місцях
function fn() {
return +new Date;
}
І я бачу, що він повертає часову позначку, а не об’єкт дати, але я не можу знайти жодної документації щодо того, що робить знак плюс.
Хтось може пояснити?
Я бачив це в кількох місцях
function fn() {
return +new Date;
}
І я бачу, що він повертає часову позначку, а не об’єкт дати, але я не можу знайти жодної документації щодо того, що робить знак плюс.
Хтось може пояснити?
Відповіді:
це + одинарний оператор, це еквівалентно:
function(){ return Number(new Date); }
getTime
метод на об’єкті дати ?!
.getTime()
завжди буде страхувати це.
Date.now()
, що є кращим способом отримання дати та часу в мілісекундах.
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 вересня 2015 12:02:54 GMT + 0530 (IST)
або як число:
1441866774938
Дати, записані у вигляді цифр, визначає кількість мілісекунд з 1 січня 1970 р. 00:00:00.
Підходячи до вашого запитання, ви вважаєте, що додаючи "+" після оператора присвоєння "=", перетворюйте дату в рівне числове значення.
те ж саме можна досягти, використовуючи функцію Number (), як Number (new Date ());
var date = +new Date(); //same as 'var date =number(new Date());'
Ось специфікація щодо оператора "unry add". Сподіваюся, це допомагає ...
Просто, щоб дати додаткову інформацію:
Якщо ви пам’ятаєте, коли ви хочете знайти різницю в часі між двома датами, ви просто зробите наступне;
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"
тепер якщо ви перевіряєте тип d1-0, це також число:
t = new Date() - 0; //numeric value of Date: number of msec's since 1 Jan 1970.
typeof t; // "number"
що + також перетворить дату в номер:
typeof (+new Date()) //"number"
Але зверніть увагу , що 0 + new Date()
буде НЕ ставитися так само! він буде об'єднаний у рядок:
0 + new Date() // "0Tue Oct 16 05:03:24 PDT 2018"
Це одинарний оператор додавання, який також використовується для явного перетворення чисел, тому, коли ви телефонуєте +new Date()
, він намагається отримати числове значення цього об'єкта, використовуючи так, valueOf()
як ми отримуємо рядок відtoString()
new Date().valueOf() == (+new Date) // true
Це робить точно так само, як:
function () {return 0 + нова дата; }
що має такий же результат, як:
function () {return new Date (). getTime (); }
new Date/1