Les valeurs sont-elles transmises par référence ou par valeur en JavaScript?

La réponse est: cela dépend!

Les types primitifs sont passés par valeur.

Les objets sont passés par référence.

Les types primitifs sont les nombres, les chaînes, les booléens, les valeurs nulles, non définies et les symboles.

Tout ce qui n'est pas un type primitif est unobjet. Les tableaux sont des objets. Les fonctions sont des objets.

Lorsque vous passez un nombre à une fonction, il est copié dans la fonction:

const increment = num => {
  num = num + 1
}

const num = 2 increment(num)

console.log(num) //2

Si vous passez un objet, il est passé par référence, donc si vous modifiez l'une de ses propriétés, l'objet d'origine est également modifié:

const increment = num => {
  num.value = num.value + 1
}

const num = { value: 2 }

increment(num)

console.log(num.value) //3

Téléchargez mon gratuitManuel du débutant JavaScript


Plus de tutoriels js: