Heim  >  Artikel  >  Web-Frontend  >  Primitive, Funktionen und WTH Der Wert wird nicht aktualisiert

Primitive, Funktionen und WTH Der Wert wird nicht aktualisiert

王林
王林Original
2024-08-14 12:33:39871Durchsuche

Primitives, Functions, and WTH The Value won

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:

  1. 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.

  2. Funktionsumfang:
    Variablen, die innerhalb einer Funktion definiert sind, haben einen Funktionsumfang, was bedeutet, dass sie nur innerhalb dieser Funktion zugänglich sind.

  3. 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:

  1. Wenn ich add3(myPoints) aufrufe, wird eine Kopie des Werts von myPoints (3) an die Funktion übergeben.
  2. Punkte sind innerhalb der Funktion eine lokale Variable, die auf 6 erhöht wird.
  3. Diese Änderung betrifft jedoch nur die lokale Punktevariable, nicht die ursprünglichen myPoints.
  4. Die Funktion gibt den neuen Wert nicht zurück, daher wird das Ergebnis nirgendwo gespeichert.
  5. Die ursprünglichen myPoints bleiben unverändert.

Um das zu beheben, habe ich zwei Hauptoptionen:

  1. Geben Sie den neuen Wert zurück und weisen Sie ihn neu zu:
function add3(points) { 
    return points + 3;
}

myPoints = add3(myPoints);
  1. Übergeben Sie die Variable als Referenz (unter Verwendung eines Objekts):
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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn