Pourquoi la modification d'un tableau en JavaScript a-t-elle un impact sur les copies ?
En JavaScript, les tableaux sont des objets et les variables contiennent des références à ces objets plutôt que les objets eux-mêmes. Cet héritage peut conduire à un comportement inattendu lors de l'attribution de nouvelles valeurs aux tableaux.
Prenons l'exemple :
// Declare an array and its copy var myArray = ['a', 'b', 'c']; var copyOfMyArray = myArray; // Modify the copy of the array copyOfMyArray.splice(0, 1); // Display the values alert(myArray); // ['b', 'c'] alert(copyOfMyArray); // ['b', 'c']
En manipulant copyOfMyArray, nous avons modifié par inadvertance myArray. En effet, des variables telles que myArray et copyOfMyArray pointent vers le même objet tableau sous-jacent.
Tableaux vs. Numbers
En revanche, lorsque vous travaillez avec des nombres comme myNumber et copyOfMyNumber, chaque variable contient une copie de la valeur elle-même. La modification de l'un n'affecte pas l'autre.
var myNumber = 5; var copyOfMyNumber = myNumber; // Decrement the copy of the number copyOfMyNumber--; // Display the values alert(myNumber); // 5 alert(copyOfMyNumber); // 4
Conséquences et solutions de contournement
Comprendre ce comportement est crucial pour une manipulation correcte des objets. Si vous avez vraiment besoin d'une copie distincte du tableau, utilisez la méthode slice pour créer une copie superficielle :
var copyOfMyArray = myArray.slice(0);
Cependant, il convient de noter que cette copie superficielle ne fait que dupliquer les références du tableau à ses éléments. Tous les objets internes feront toujours référence aux mêmes instances d'origine.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!