JavaScript est-il un langage qui utilise le passage par référence ou le passage par valeur ?
P粉002546490
P粉002546490 2023-10-11 17:50:30
0
1
571

Les types primitifs (nombres, chaînes, etc.) sont passés par valeur, mais les objets sont inconnus puisqu'ils peuvent tous être passés par valeur (dans ce cas, nous pensons que la variable contenant l'objet est en fait une référence à l'objet) et passer par référence (quand nous pensons que les variables d'un objet contiennent l'objet lui-même).

Même si cela n'a pas d'importance au final, j'aimerais savoir quelle est la bonne façon de présenter la 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粉002546490
P粉002546490

répondre à tous (1)
P粉195402292

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
  • Siobj1根本不是引用,则更改obj1.item不会对函数外部的obj1a 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 unappel partagé.

En pratique, cela signifie que si vous modifiez le paramètre lui-même (comme le faitnumobj2),则不会影响输入到范围。但是,如果您更改参数的内部,它将向上传播(与obj1).

    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!