Я хочу сделать функцию, которая принимает сколько угодно аргументов и делает их видимыми для всего кода. Приведу пример: на вход она принимает функцию a и в своём теле делает window.a = a, вся проблема заключается именно в том, что имена переменных нужно как-то получить. Конечно, можно собрать их все в объект и сделать видимым его, но хотелось бы именно сами переменные.
Вот моя функция (нерабочая):
function MakeVisible () {
for (var i = 0; i < arguments.length; i++) {
window[arguments[i]] = arguments[i];
};
};
Мы можем узнать имя переменной если передавать их объектом, как-то так(не рекомендую использовать глобальные переменные в продакшене):
function makeVisible (obj) {
Object.keys(obj).map(item => window[item] = obj[item])
};
var a = 1, b = 'string';
makeVisible({a, b})
// makeVisible({a:a, b:b}) без использования es6 синтаксиса
console.log(window.b)
Вы изначально думали верно, но выбрали не тот вид for. Нужно использовать for in:
function makeVisible(parameterObject)
{
for(var i in parameterObject)
window[i] = parameterObject[i]
}
//далее передаёте любое количество переменных, но в объекте:
makeVisible({first: 1, second: 2, third: 'третий'});
//после этого можете вызывать их даже без обращения через window – они будут видны везде.
console.log(first);
console.log(second);
console.log(third);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости