javascript - globale Variablen innerhalb einer Funktion setzen

Ich versuche, eine Funktion zu erstellen, die den Wert der globalen Variablen, die als Parameter übergeben wird, dynamisch festlegt. Es funktioniert nicht und ich versuche herauszufinden, warum. Kann mir bitte jemand erklären, warum das nicht funktioniert:

var things = 5;

function setup(variable) {
    variable = 7;
}

setup(things);

console.log(things); //should return 7. returns 5 instead. the function had no effect on the global variable

und das funktioniert auch nicht:

var things = 5;

function setup(variable) {
    window.variable = 7;
}

setup(things);

console.log(things); //should return 7, but returns 5. still not accessing the global variable.

aber das macht:

var things = 5;

function setup(variable) {
    window[variable] = 7;
}

setup("things");

console.log(things); //returns 7

Ich vermute, was passiert ist, dass der Parametervariable wird als lokale Variable innerhalb der Funktion festgelegt, sodass Änderungen nur an der lokalen Version vorgenommen werden. Dies erscheint jedoch merkwürdig, da der übergebene Parameter eine globale Variable ist. Kann mir jemand erklären, was passiert und wie man diesen Code besser schreibt? Benötigt dies eine Methode (die dann @ verwenden kathis um auf das ursprüngliche Objekt zuzugreifen)?

Vielen Dank!

Antworten auf die Frage(6)

Ihre Antwort auf die Frage