JavaScript - установка глобальных переменных внутри функции

Я пытаюсь создать функцию, которая будет динамически устанавливать значение любой глобальной переменной, передаваемой в качестве параметра. Это не работает, и я пытаюсь понять, почему. Может кто-нибудь объяснить, почему это не работает:

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

и это тоже не работает:

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.

но это делает:

var things = 5;

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

setup("things");

console.log(things); //returns 7

Я подозреваю, что происходит то, что параметрvariable устанавливается как локальная переменная внутри функции, поэтому любые изменения происходят только с локальной версией. Но это кажется странным, потому что переданный параметр является глобальной переменной. Может кто-нибудь объяснить мне, что происходит и как лучше написать этот код? Требуется ли для этого метод (который затем может использоватьthis получить доступ к исходному объекту)?

Спасибо!!

Ответы на вопрос(3)

Ваш ответ на вопрос