#javascript
Есть такой код: 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. Почему и как это исправить?
Ответы
Ответ 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];Ответ 2
А зачем там вообще eval? По моему так будет то же самое: case 'A': core_object.language_code.a[key] = response[key]; break;
Комментариев нет:
Отправить комментарий