Я хочу сделать функцию, которая принимает сколько угодно аргументов и делает их видимыми для всего кода. Приведу пример: на вход она принимает функцию 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);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Расскажите мне про функцию return как для ребёнка, я не могу понять как её использовать в JavaScript
При изменении значения location в заданном диапазоне, требуется выполнить условие, нo условие не срабатываетЗначение location - это бегунок JQuery UI
Ребята, подскажите каким образом сайд бар отображать на главной странице, а когда переходишь на товар или другую страницу что бы он прятался!?