Attribution de variable de date Javascript
var date1 = new Date();
date1.setFullYear(2011, 6, 1);
//2011-07-01, ok
console.log(date1);
//set date2 the same date as date1
var date2 = date1;
//...
//now I'm gonna set a new date for date2
date2.setFullYear(2011, 9, 8);
//2011-10-08, ok
console.log(date2);
//2011-10-08, wrong, expecting 2011-07-01
//I didn't assign a new date to date1
//WHY is date1 changed?
console.log(date1);
source d'informationauteur railOne
Vous devez vous connecter pour publier un commentaire.
Date est l'objet , alors il est désigné comme référence - approche simple est
À la fois la date variables sont juste des références à la même date l'objet en mémoire. Si vous avez besoin
date2
être un clone dedate1
. Modification::
date2
C'est une référence àdate1
.Pour atteindre les résultats attendus, procédez de la manière suivante:
JavaScript utilise le passage par référence pour les Dates* (ainsi que tous les non-primitives --
var o = {}; var j = o; j.foo = 1; console.log(o.foo); //1
. D'autre part, pour les Nombres, Chaînes de caractères et des valeurs Booléennesvar o = 0; var j = o; j++; console.log(j); //0
), ce qui est le comportement attendu.Si vous avez besoin de copier une date, vous pouvez toujours
* S'il vous plaît voir les commentaires pour comprendre pourquoi ce n'est pas tout à fait correct.
Vous devez créer une copie de
date1
actuellementdate1
etdate2
reportez-vous à la même date objet.Variation de @SergeS réponse, mais Date() des objets en js contraindre à le nombre, de sorte que vous n'avez pas besoin getTime():
Et retraités avec OP noms de variable: