Hauteur mentionnée : 'Les paramètres de toutes les fonctions dans ECMAScript sont transmis par valeur'.
C'est comme copier une valeur d'une variable à une autre.
Alors la valeur du type référence est également la même que celle du type de base ?
Exemple 1 :
var person = { name : "leaf" }; function obj(o){ o.name = "kafu"; return o; } var result = obj(person); console.log(result.name);// kafu console.log(person.name);// kafu
Pourquoi apparaît-il que les paramètres de type référence sont passés par référence ?
Exemple 2 :
var person = { name : "leaf" }; function obj(o){ o = { name : "kafu" }; return o; } var result = obj(person); console.log(result.name);// kafu console.log(person.name);// leaf
Différence :
Dans l'exemple 1, person est passé à obj() En fait. , C'est-à-dire copier la référence de l'objet personne et la transmettre à o (peut être considéré comme une adresse Person et o pointent vers le même objet en même temps. Modifier les attributs dans o modifie en fait l'attribut name du). objet qu’ils désignent conjointement. Parce qu'il n'y a qu'un seul objet dans la zone mémoire à ce moment-là.
Deux exemples. L'adresse o pointe vers un autre objet nouvellement créé. À l'heure actuelle, il y a deux objets dans la mémoire. Toute modification apportée au nouvel objet pointé par o n'aura aucun impact sur l'ancien objet pointé. à par personne de.
Pourquoi dit-on que « les paramètres de toutes les fonctions dans ECMAScript sont transmis par valeur ».
Je ne parlerai pas des types de base.
Pour les types référence, le passage des paramètres est une copie de référence de l'objet. Cela équivaut à transmettre une nouvelle adresse après une copie. Cette adresse de copie peut en fait être comprise comme un passage par valeur (également appelé passage partagé).
Utiliser des objets à passer en paramètres
Lorsque vous passez des objets en paramètres, vous n'avez pas besoin de considérer l'ordre des paramètres, ce qui est très utile.
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!