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
получить доступ к исходному объекту)?
Спасибо!!