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 à:
function(){ return Number(new Date); }
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
getTimemé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:
>>> +new Date()
1224589625406
>>> +"3"
3
>>> +true
1
>>> 3 == "3"
true
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 ());
var date = +new Date(); //same as 'var date =number(new Date());'
Voici la spécification concernant l'opérateur "unary add". J'espère que ça aide...
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;
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"
maintenant si vous cochez le type de d1-0, c'est aussi un nombre:
t = new Date() - 0; //numeric value of Date: number of msec's since 1 Jan 1970.
typeof t; // "number"
ce + convertira également la date en nombre:
typeof (+new Date()) //"number"
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:
0 + new Date() // "0Tue Oct 16 05:03:24 PDT 2018"
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 utilisant valueOf()comme nous obtenons la chaîne detoString()
new Date().valueOf() == (+new Date) // true
Cela fait exactement la même chose que:
function () {return 0 + new Date; }
cela a le même résultat que:
function () {return new Date (). getTime (); }
new Date/1