Eu já vi isso em alguns lugares
function fn() {
return +new Date;
}
E vejo que está retornando um carimbo de data e hora em vez de um objeto de data, mas não consigo encontrar nenhuma documentação sobre o que o sinal de mais está fazendo.
Alguém pode explicar?
javascript
syntax
Ken
fonte
fonte
Respostas:
esse é o operador + unário, é equivalente a:
consulte: http://xkr.us/articles/javascript/unary-add/
e no MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus
fonte
getTime
método definido no objeto date ?!.getTime()
sempre garantirá que sim.Date.now()
, que é a maneira preferida de obter a data e a hora em milissegundos.O JavaScript é digitado livremente, portanto, ele executa coerção / conversão de tipo em determinadas circunstâncias:
http://blog.jeremymartin.name/2008/03/understanding-loose-typing-in.html
http://www.jibbering.com/faq/faq_notes/type_convert.html
Outros exemplos:
fonte
Uma data JavaScript pode ser escrita como uma sequência:
Quinta-feira, 10 de setembro de 2015 12:02:54 GMT + 0530 (IST)
ou como um número:
1441866774938
Datas escritas como números, especifica o número de milissegundos desde 1 de janeiro de 1970, 00:00:00.
Chegando à sua pergunta, parece que adicionando '+' após o operador de atribuição '=', convertendo Data em igual valor numérico.
o mesmo pode ser alcançado usando a função Number (), como Number (new Date ());
fonte
Aqui está a especificação referente ao operador "adição unária". Espero que ajude...
fonte
Só para dar mais algumas informações:
Se você se lembrar, quando quiser encontrar a diferença horária entre duas datas, faça o seguinte;
Agora, se você verificar o tipo de d1-0, também será um número:
que + também converterá a data em número:
Mas nota que
0 + new Date()
vai não ser tratados da mesma forma! será concatenado como string:fonte
É um operador de adição unário e também é usado para conversão explícita de números; portanto, quando você chama
+new Date()
, ele tenta obter o valor numérico desse objeto usandovalueOf()
como obtemos a string detoString()
fonte
Faz exatamente a mesma coisa que:
que tenha o mesmo resultado que:
fonte
new Date/1