Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   PHP-шная конструкция ${$var1.$var2}. А в яваскрипте? (https://javascript.ru/forum/misc/4030-php-shnaya-konstrukciya-%24%7B%24var1-%24var2%7D-v-yavaskripte.html)

maxikuku 15.06.2009 20:49

PHP-шная конструкция ${$var1.$var2}. А в яваскрипте?
 
Здравствуйте!
Собственно сабж. Есть ли такая конструкция в яваскрипте, которая позволяет формировать из строк имя переменной, к которой обращаешься.
Хотел как-нибудь поискать ответ самостоятельно, но даже в голову не приходит как правильно сформировать вопрос.
Буду очень благодарен за ответ.

Octane 15.06.2009 20:57

Если нужно обратится к переменной из глобального контекста:
window["var1"]

С локальным контекстом сложнее, придется использолвать eval. Расскажите для чего это вам понадобилось, может быть подскажем, как обойтись без таких вещей.

maxikuku 15.06.2009 21:12

хе-хе.
очень даже получилось.
eval(var1+var2)
Очень большое спасибо вам, добрый человек, за подсказку.

x-yuri 16.06.2009 01:13

Цитата:

Расскажите для чего это вам понадобилось, может быть подскажем, как обойтись без таких вещей
осталось незамеченным :cray:

maxikuku 16.06.2009 10:30

да нет же, я не жадный :). Могу поделиться.
пхп-шный цикл генерирует вот такой набор переменных
WMUWMZ=7.478;
WMZWMU=0.133725595079;
WMRWMZ=31.139;
WMZWMR=0.0321140691737;
WMEWMZ=1.357;
WMZWME=0.736919675755;
WMUWME=10.355;
WMEWMU=0.0965717044906;
WMRWME=42.489;
WMEWMR=0.0235355033067;
WMUWMR=4.155;
WMRWMU=0.240673886883;
ну и еще десяток подобных

и вот такая конструкция
if ( substr(C1,0,2)==substr(C2,0,2) ) { // аля WM=WM
C=Math.round((eval(C1+C2)+0.0000001)*10000)/10000;
в зависимости от того какие данные получат С1 и С2 (данные с формы страницы) в уравнение подставляется нужная переменная.
Может быть не слишком оптимизированный, но вполне рабочий код.

Kolyaj 16.06.2009 10:36

Цитата:

Сообщение от maxikuku
но вполне рабочий код

Не код, а говнокод.

var currencies = {
    WMUWMZ: 7.478,
    WMZWMU: 0.133725595079,
    WMRWMZ: 31.139,
    WMZWMR: 0.0321140691737
};
if (substr(C1, 0, 2) == substr(C2, 0, 2) ) { // аля WM=WM
    C = Math.round((currencies[C1 + C2] + 0.0000001) * 10000) / 10000;
}


Часовой пояс GMT +3, время: 09:22.