亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

JavaScript est-il un langage de passage par référence ou par valeur??
P粉450744515
P粉450744515 2023-08-23 18:58:12
0
1
634
<p>Les types primitifs (nombres, cha?nes, etc.) sont transmis par valeur, mais les objets sont inconnus car ils peuvent tous être transmis par valeur (auquel cas la variable qui, selon nous, contient l'objet est en fait une référence à un objet) et passage par référence (quand nous pensons que les variables d'un objet contiennent l'objet lui-même). </p> <p>Bien que cela n'ait pas d'importance en fin de compte, j'aimerais savoir quelle est la bonne fa?on de présenter une convention de passage de paramètres. Existe-t-il un extrait de la spécification JavaScript qui définit la sémantique associée à cela?? </p>
P粉450744515
P粉450744515

répondre à tous(1)
P粉231112437

JavaScript est amusant. Prenons cet exemple?:

function changeStuff(a, b, c)
{
  a = a * 10;
  b.item = "changed";
  c = {item: "changed"};
}

var num = 10;
var obj1 = {item: "unchanged"};
var obj2 = {item: "unchanged"};

changeStuff(num, obj1, obj2);

console.log(num);
console.log(obj1.item);
console.log(obj2.item);

Cela produit le résultat?:

10
changed
unchanged
  • Si obj1 根本不是引用,則更改 obj1.item 不會對函數(shù)外部的 obj1 a un impact.
  • Si les paramètres sont des références correctes, tout change. num 將是 100,而 obj2.item 將讀取“changed”。相反,num 保持 10obj2.item 保持“不變”.

Au lieu de cela, ce qui se passe, c'est que l'élément transmis est transmis par valeur. Mais un élément passé par valeur est lui-même une référence. Techniquement, cela s'appelle un appel partagé.

En pratique, cela signifie que si vous modifiez le paramètre lui-même (comme le fait numobj2),則不會影響輸入到范圍。但是,如果您更改參數(shù)的內(nèi)部,它將向上傳播(與 obj1).

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal