Сделать переменные видимыми js

149
02 августа 2018, 11:00

Я хочу сделать функцию, которая принимает сколько угодно аргументов и делает их видимыми для всего кода. Приведу пример: на вход она принимает функцию a и в своём теле делает window.a = a, вся проблема заключается именно в том, что имена переменных нужно как-то получить. Конечно, можно собрать их все в объект и сделать видимым его, но хотелось бы именно сами переменные.

Вот моя функция (нерабочая):

function MakeVisible () { 
	for (var i = 0; i < arguments.length; i++) { 
		window[arguments[i]] = arguments[i]; 
	}; 
};

Answer 1

Мы можем узнать имя переменной если передавать их объектом, как-то так(не рекомендую использовать глобальные переменные в продакшене):

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)

Answer 2

Вы изначально думали верно, но выбрали не тот вид 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);

READ ALSO
Как использовать return в JavaScript?

Как использовать return в JavaScript?

Расскажите мне про функцию return как для ребёнка, я не могу понять как её использовать в JavaScript

170
Не срабатывает условие в скрипте

Не срабатывает условие в скрипте

При изменении значения location в заданном диапазоне, требуется выполнить условие, нo условие не срабатываетЗначение location - это бегунок JQuery UI

150
На главной отображать, на всех остальных скрыть!

На главной отображать, на всех остальных скрыть!

Ребята, подскажите каким образом сайд бар отображать на главной странице, а когда переходишь на товар или другую страницу что бы он прятался!?

128
Поиск набора слов в строке

Поиск набора слов в строке

Делаю фильтр сообщений в боте ТелеграмСтолкнулся с такой проблемой

123