console.log() renvoie instantanément les modifications dans les références du tableau
En JavaScript, les variables contenant des valeurs primitives telles que les nombres et les chaînes sont transmises par valeur , tandis que ceux contenant des objets sont passés par référence. Cette distinction devient évidente lors de la manipulation de tableaux.
Considérez le code suivant :
var A = [2, 1]; var C = A; console.log(C); // [1, 2] A.sort(); console.log(C); // [1, 2]
Dans cet exemple, C se voit attribuer une référence au tableau A. Lorsque A est trié, les modifications sont immédiatement reflété dans C, avant même que A ne soit à nouveau accédé.
Pourquoi cela se produit-il ? Contrairement aux valeurs primitives, les objets sont alloués en tas, ce qui signifie qu'ils résident dans la mémoire de l'ordinateur et sont accessibles via une référence. Lorsque nous enregistrons C, console.log() imprime la référence au tableau et non une copie de son contenu. Ainsi, toute modification ultérieure de l'objet référencé (dans ce cas, le tri du tableau) sera également visible dans la console avant que A ne soit à nouveau utilisé.
Pour éviter ce comportement et enregistrer un instantané de l'objet au niveau instant console.log() est appelé, vous pouvez utiliser l'astuce suivante :
console.log(JSON.parse(JSON.stringify(C)));
Cette technique crée une copie complète de l'objet à l'aide de la sérialisation et de la désérialisation JSON.
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!