J'ai vu ça à quelques endroits
function fn() {
return +new Date;
}
Et je peux voir qu'il retourne un horodatage plutôt qu'un objet de date, mais je ne trouve aucune documentation sur ce que fait le signe plus.
Quelqu'un peut-il expliquer?
J'ai vu ça à quelques endroits
function fn() {
return +new Date;
}
Et je peux voir qu'il retourne un horodatage plutôt qu'un objet de date, mais je ne trouve aucune documentation sur ce que fait le signe plus.
Quelqu'un peut-il expliquer?
Réponses:
c'est l'opérateur + unaire, c'est équivalent à:
voir: http://xkr.us/articles/javascript/unary-add/
et dans MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus
la source
getTime
méthode définie sur l'objet date?!.getTime()
s'assurera toujours qu'il le fasse.Date.now()
, qui est le moyen préféré pour obtenir la date et l'heure en millisecondes.JavaScript est typé de manière lâche, il effectue donc une coercition / conversion de type dans certaines circonstances:
http://blog.jeremymartin.name/2008/03/understanding-loose-typing-in.html
http://www.jibbering.com/faq/faq_notes/type_convert.html
Autres exemples:
la source
Une date JavaScript peut être écrite sous forme de chaîne:
Jeu. 10 sept. 2015 12:02:54 GMT + 0530 (IST)
ou sous forme de nombre:
1441866774938
Les dates écrites sous forme de nombres, spécifient le nombre de millisecondes depuis le 1er janvier 1970, 00:00:00.
En venant à votre question, il semble qu'en ajoutant «+» après l'opérateur d'affectation «=», la conversion de Date en valeur numérique égale.
la même chose peut être obtenue en utilisant la fonction Number (), comme Number (new Date ());
la source
Voici la spécification concernant l'opérateur "unary add". J'espère que ça aide...
la source
Juste pour donner plus d'informations:
Si vous vous souvenez, lorsque vous voulez trouver le décalage horaire entre deux dates, vous faites simplement ce qui suit;
maintenant si vous cochez le type de d1-0, c'est aussi un nombre:
ce + convertira également la date en nombre:
Mais notez que
0 + new Date()
cela ne sera pas traité de la même manière! il sera concaténé sous forme de chaîne:la source
Il s'agit d'un opérateur d'ajout unaire et également utilisé pour la conversion explicite des nombres, donc lorsque vous appelez
+new Date()
, il essaie d'obtenir la valeur numérique de cet objet en utilisantvalueOf()
comme nous obtenons la chaîne detoString()
la source
Cela fait exactement la même chose que:
cela a le même résultat que:
la source
new Date/1