Malgré la référence aux spécifications ES6 qui mettent l'accent sur l'immuabilité des constantes, JavaScript permet des actions apparemment contradictoires sur des objets constants. Lors de l'attribution d'une valeur différente à un objet constant, celle-ci reste inchangée, mais l'ajout ou la suppression d'éléments au sein de l'objet est apparemment possible.
Selon la documentation MDN, "une constante ne peut pas changement par réaffectation » et « constante ne peut pas être redéclarée ». Fondamentalement, cela implique que la référence à l’objet est constante, et non à l’objet lui-même. Vous ne pouvez pas attribuer un nouvel objet à la variable constante, mais vous pouvez modifier le contenu de l'objet.
Considérez l'extrait de code suivant :
const myArray = []; myArray.push(1); console.log(myArray); // Output: [1]
Dans ce cas, la référence au tableau myArray reste inchangée car elle pointe toujours vers le même objet tableau. Cependant, l'opération push() ajoute un élément au tableau, modifiant son contenu mais ne violant pas la sémantique constante.
De même, vous pouvez ajouter des propriétés à un objet constant sans modifier la référence :
const myObject = {}; myObject.foo = 'bar'; console.log(myObject); // Output: {foo: "bar"}
Il est important de distinguer entre réaffectation et modification. Alors que la réaffectation crée une nouvelle référence, la modification opère sur la même référence d'objet. Dans le cas d'objets constants, la réaffectation est interdite pour garantir l'immuabilité, tandis que la modification du contenu de l'objet est toujours autorisée.
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!