#jquery #variables
#jquery ( jquery ) #переменные
Вопрос:
Я искал об этом, но, похоже, не могу найти, как именно это сделать. Есть ли простой способ напрямую преобразовать значение в переменную? Эта иллюстрация может помочь вам понять мою проблему.
var a = "randomText";
var randomText = "someothervalue";
Я читал об eval(), но там сказано, что его не рекомендуется использовать, так как он «злой».
Пожалуйста, помогите. Спасибо.
Ответ №1:
Если у вас есть набор данных, к которым вам нужно получить доступ по имени, используйте правильную структуру данных вместо того, чтобы перемещать кучу переменных. Используйте объект.
var someObject = {};
someObject['foo'] = 123;
var propertyName = 'foo';
alert(someObject[propertyName]);
Комментарии:
1. 1 за правильный ответ и предложение использовать правильные структуры данных.
Ответ №2:
Если вы создаете глобальную переменную:
var a = "randomText";
window[a] = "value_of_random_text";
Комментарии:
1. 1 и если вы не работаете с глобальными значениями, использование обозначения в квадратных скобках для текущего объекта в области видимости является правильной методологией.
Ответ №3:
Вы не можете использовать его без оценки.
Плохая сторона оценки Anad связана в основном с инъекциями.
не запутайтесь. Это не зло.
jQuery часто использует это. (например, json …)
Комментарии:
1.
eval
нарушает область видимости, работает очень медленно и усложняет отладку. Это зло. jQuery не использует его часто. Он использует его только для синтаксического анализа JSON, когда в браузере нет встроенного надлежащего анализатора JSON (а в наши дни большинство браузеров так и делают).2. @Quentin, не могли бы вы объяснить :
Breaks Scope
?3. Использование обозначения в квадратных скобках для текущего объекта в области видимости является правильной методологией.
4. @RoyiNamir jQuery делает все возможное, чтобы избежать
eval
, потому что это неправильно использовать. Это опускается до того, чтобы использовать его, когда нет абсолютно никаких других средств для отмены сериализации JSON. ИМО, они должны полностью исключить использованиеeval
и предупредить разработчиков, чтобы сделать API JSON доступным там, где его нет. В своих проектах я всегда включаю прокладку JSON API Крокфорда перед jQuery, чтобы убедитьсяeval
, что она не используется. Это стоит нескольких дополнительных байтов.
Ответ №4:
eval(«var » a » = ‘someothervalue’;»);
В данном случае это не должно быть «злом».
Комментарии:
1. Использование обозначения в квадратных скобках для текущего объекта в области видимости является правильной методологией.