Maintenant, avec votre code, c'est clair! Jetons un coup d'oeil
var chat = {
users: [
{
username: "test"
},
{
username: "test1"
}
]
},
// creating reference from save to chat.users
save = chat.users,
i = 0;
if (chat.users[i + 1]) {
// should be chat.users[1].username ("test1")
console.log("1: " + chat.users[i + 1].username); // output "test1"
}
if (save[i + 1]) {
// should be save[1].username ("test1")
console.log("2: " + save[i + 1].username); // output "test1"
}
/*
* creating reference
* so chat.users[i + 1] is now save[i] ({ username: "test" })
* and because save is reference of chat.users, save[i + 1] is now also now save[i] ({ username: "test" })
*/
chat.users[i + 1] = save[i];
if (chat.users[i + 1]) {
// should be chat.users[1].username ("test")
console.log("3: " + chat.users[i + 1].username); // output "test"
}
if (save[i + 1]) {
// should be chat.users[0].username ("test")
console.log("4: " + save[i].username); // output "test"
}
Quoi?
Laissez-moi vous l'expliquer à nouveau. Par exemple, vous avez ceci:
var a = [1, 2];
Maintenant, vous écrivez ceci:
var b = a;
Peut-être que vous vouliez copier un à b mais vous seulement créé une référence!
donc un coup d'oeil à ceci:
console.log(a, b);
//=> [1, 2] [1, 2]
a[0] = 3;
console.log(a, b);
//=> [3, 2] [3, 2]
b[0] = 4;
console.log(a, b);
//=> [4, 2] [4, 2]
Donc, si vous changez une valeur de l'objet ou un tableau, il va être changé pour l'autre aussi parce qu'il est seulement une référence et ils ont tous deux obtenu le même adresse mémoire
Si vous voulez vraiment cloner/copier l'objet/tableau, jetez un oeil à this question.
Ok, je le fais et que ŒUVRES \t \t \t \t \t si (temp [0]) Temp [1] = temp [0]; \t \t \t \t \t else temp [1] = enregistrer [i]; \t \t \t \t \t \t si (enregistrer [i + 1]) temp [0] = enregistrer [i + 1]; \t \t \t \t \t chat.users [i + 1] = temp [1]; – Ajouve