Может ли функция создавать переменные? [дубликат]

143
11 сентября 2019, 01:20

На данный вопрос уже ответили:

  • Переменная как название массива 2 ответа
  • Обращение к массиву через переменную [дубликат] 2 ответа
  • Как обратиться к переменной с id в имени? JS 1 ответ

Есть функция:

function createVar(названиеПеременно, значениеПеременной) { 
 
  let названиеПеременно = значениеПеременной; 
  return названиеПеременно; 
} 
 
createVar('первая', 'значение1'); 
createVar('вторая', 'значение2'); 
 
//createVar(первая, 'значение'); 
 
console.log(первая)

Допустим я получаю из вне некоторые данные. И данные разные. И при каждом вызове функции createVar, я должен присвоить полученную информацию новой переменной.

Как такое реализовать?

Хочу отметить сразу, что могу создать объект и при вызове функции создавать ключ и значение и запушить в объект. Такой вариант уже реализован.

Этот вопрос несет в себе, лично для меня, расширяющий кругозор, значения.

Answer 1

function CreateVar(varName, varValue) { 
  window[varName] = varValue; 
  return varName; 
} 
 
CreateVar("one", 1); 
CreateVar("two", 2); 
 
console.log(one); //1 
console.log(two); //2

Answer 2

В дополнение к ответу выше. Знаю, что eval - evil ;)

let createVar0 = (variable, value) => { 
  value = (typeof value === "string" ? `'${value}'` : value); 
  eval(`var ${variable} = ${value};`); //в переделах блока 
 
  console.log(first); //определена 
} 
 
createVar0("first", "значение");

Answer 3

Используйте setter. Вот вариант просто создания переменных с каким-то значением value.

function createVar(...args) { 
  for (var key in args) { 
   Object.defineProperty(window, args[key], {value: args[key], configurable: true, writable: true, enumerable: true }) 
   } 
} 
createVar('первая', 'значение1'); 
createVar('вторая', 'значение2'); 
console.log(первая,значение1,вторая,значение2);

А этот вариант с присваиванием.

function createVar(variable, value) { 
 Object.defineProperty(window, variable, {value: value, configurable: true, writable: true, enumerable: true }) 
} 
createVar('первая', 'значение1'); 
createVar('вторая', 'значение2'); 
console.log(первая,вторая);

READ ALSO
Некорректная работа плагина jquery-ui autocomplete

Некорректная работа плагина jquery-ui autocomplete

При перезагрузке страницы и начале ввода не работает плагин jquery-ui autocompleteПри продолжении ввода начинает работать, но с первого символа не хочет

155
Javascript как двигать элемент стрелкой? [закрыт]

Javascript как двигать элемент стрелкой? [закрыт]

в JS не очень разбираюсь, нужно управлять элементом стрелкой (верх,вниз,влево,вправо)Элемент(изображение) добавлен в canvas через JS, стартовая...

134
Управление автоскроллом в fullpage.js

Управление автоскроллом в fullpage.js

У меня проблема с плагином fullpagejs

120
Рекурсивная процедура

Рекурсивная процедура

По сути мне нужна была рекурсивная функция, но я прочитал что функции в mysql не могут быть рекурсивными, так что сделал процедуруТолько она...

132