Les paramètres sont-ils transmis en JavaScript par valeur ou par référence ?
P粉394812277
2023-08-21 15:57:16
<p>Les types primitifs (nombres, chaînes, etc.) sont passés par valeur, mais les objets sont inconnus car ils peuvent tous deux être passés par valeur (auquel cas nous pensons que la variable contenant l'objet est en fait la référence de l'objet), peut également être passé par référence (auquel cas nous considérons que la variable contient l'objet lui-même). </p>
<p>Bien que cela n'ait finalement pas d'importance, j'aimerais savoir comment restituer correctement la convention de passage des paramètres. Existe-t-il un extrait de la spécification JavaScript qui définit la sémantique à ce sujet ? </p>
C'est amusant en JavaScript. Prenons l'exemple suivant :
Cela produira le résultat suivant :
obj1
根本不是引用,那么改变obj1.item
对函数外部的obj1
il n'y a pas d'impact.num
将为100
,obj2.item
将为"changed"
。相反,num
保持为10
,obj2.item
仍然为"unchanged
".En fait, ce qui se passe, c'est que l'élément transmis est transmis par valeur. Mais l'élément passé par valeur lui-même est une référence. Techniquement, cela s'appelle un appel partagé.
Dans les applications pratiques, cela signifie si vous modifiez le paramètre lui-même (comme
num
和obj2
),那不会影响传入参数的项。但是,如果更改参数的内部,那将会传播回来(如obj1
).