Maison >interface Web >js tutoriel >Primitives, fonctions et WTH La valeur ne sera pas mise à jour
Je travaillais un peu sur mes bases et je suis tombé sur ce problème, que je connais intuitivement, mais que je ne suis jamais entré dans les détails pour explorer. Et je n'ai aucune excuse pour ne pas mieux comprendre comment JavaScript traite les primitives.
C'est de loin l'exemple le plus simple. Ici, la variable myPoints ne sera pas mise à jour même lorsque j'appelle les fonctions add3 et remove1.
let myPoints = 3; function add3(points) { points += 3; } function remove1(points) { points--; } add3(myPoints); remove1(myPoints); console.log(myPoints) // 3
Voici les concepts de base qui font que cela fonctionne comme il le fait :
Passez par valeur :
En JavaScript, lorsque vous transmettez des valeurs primitives (comme des nombres) à des fonctions, elles sont transmises par valeur. Cela signifie qu'une copie de la valeur est créée et transmise à la fonction, et non à la variable d'origine elle-même.
Portée de la fonction :
Les variables définies à l'intérieur d'une fonction ont une portée de fonction, ce qui signifie qu'elles ne sont accessibles que dans cette fonction.
Valeurs de retour :
Les fonctions en JavaScript doivent renvoyer explicitement une valeur si vous souhaitez utiliser le résultat en dehors de la fonction.
Voici pourquoi myPoints ne change pas :
Pour résoudre ce problème, j'ai deux options principales :
function add3(points) { return points + 3; } myPoints = add3(myPoints);
let myPoints = { value: 3 }; function add3(pointsObj) { pointsObj.value += 3; } add3(myPoints); console.log(myPoints.value); // Now it's 6
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!