Как преобразовать значение в переменную в jquery?

#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. Использование обозначения в квадратных скобках для текущего объекта в области видимости является правильной методологией.