Ich habe ein wenig an meinen Grundlagen gearbeitet und bin auf dieses Problem gestoßen, das ich intuitiv kenne, aber nie ins Detail gegangen bin, um es zu untersuchen. Und es gibt keine Entschuldigung für mich, kein tieferes Verständnis dafür zu haben, wie JavaScript mit Primitiven umgeht.
Dies ist bei weitem das einfachste Beispiel. Hier wird die Variable „myPoints“ nicht aktualisiert, selbst wenn ich die Funktionen „add3“ und „remove1“ aufrufe.
let myPoints = 3; function add3(points) { points += 3; } function remove1(points) { points--; } add3(myPoints); remove1(myPoints); console.log(myPoints) // 3
Hier sind die Kernkonzepte, die dafür sorgen, dass dies so funktioniert:
Wert übergeben:
Wenn Sie in JavaScript primitive Werte (wie Zahlen) an Funktionen übergeben, werden diese als Wert übergeben. Dies bedeutet, dass eine Kopie des Werts erstellt und an die Funktion übergeben wird, nicht die Originalvariable selbst.
Funktionsumfang:
Variablen, die innerhalb einer Funktion definiert sind, haben einen Funktionsumfang, was bedeutet, dass sie nur innerhalb dieser Funktion zugänglich sind.
Rückgabewerte:
Funktionen in JavaScript müssen explizit einen Wert zurückgeben, wenn Sie das Ergebnis außerhalb der Funktion verwenden möchten.
Aus diesem Grund ändert sich myPoints nicht:
Um das zu beheben, habe ich zwei Hauptoptionen:
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
Das obige ist der detaillierte Inhalt vonPrimitive, Funktionen und WTH Der Wert wird nicht aktualisiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!