Использование переменных в eval

206
09 июня 2018, 21:50

Есть такой код:

            function getResult(result) {
                response = result.langs;
                for (key in response){
                    switch (response[key][0]){
                        case 'A':
                        eval('core_object.language_code.a.'+key+'='+response[key]+';')
                            break;
    //Анологично до конца алфавита
}

Значение response это объект со множеством значений типа:

    {
    af: 'Afrikaans',
    am: 'Amharic'
    //И так далее
    }

Значение key = af и так далее, а response[key] = 'Afrikaans' и так далее.

Тут возникает проблема разобраться в сути которой я не могу: в коде eval('core_object.language_code.a.'+key+'='+response[key]+';') переменная key, как и предполагалось используется как строка содержащая значение 'af' а вот строка содержащаяся в response[key] используется как переменная из за чего получается ошибка: ReferenceError: Afrikaans is not defined.

Почему и как это исправить?

Answer 1

Строка, которая подается в eval:

core_object.language_code.a.af = Afrikaans;

То, что справа от знака "равно", понимается как переменная. Но такой переменной нет.

eval('core_object.language_code.a.'+key+'="'+response[key]+'";')

Получится core_object.language_code.a.af = "Afrikaans";.

Или

eval('core_object.language_code.a.'+key+'=response.'+key+';')

Получится core_object.language_code.a.af = response.af;.

Или без eval:

core_object.language_code.a[key] = response[key];
Answer 2

А зачем там вообще eval? По моему так будет то же самое:

case 'A':
  core_object.language_code.a[key] = response[key];
  break;
READ ALSO
Вывод сложного объекта через v-for

Вывод сложного объекта через v-for

Есть объект core_objectlanguage_code такого вида

162
Как получить кодировку страницы на NodeJS?

Как получить кодировку страницы на NodeJS?

Вопрос прост - как получить кодировку страницы?

163
Программное затемнение картинки

Программное затемнение картинки

Как понять, как стиль или правило применяется к картинке на сайте, с помощью которого она как бы тонируется, затемняетсяХочу убрать это

171
Найти значение в object

Найти значение в object

Задача такая: нужно "вернуть родословную" в 2 объектах те есть 2 объекта obj1 и obj2 и их свойства:

198