Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Конкатенация имен переменных (https://javascript.ru/forum/css-html/7353-konkatenaciya-imen-peremennykh.html)

mff 28.01.2010 03:06

Конкатенация имен переменных
 
Помогите с кодом:
var p_10_pos=1;
...p_pos2=0;num=10;...
eval('p_'+num+'_pos') = p_pos2;


Почему не работает? :help:

Мараторий 28.01.2010 03:54

Потому что "Метод eval возвращает значение последнего вычисленного выражения".
И ваша запись эквивалентна
1 = p_pos2

Читайте Справочник.

mff 28.01.2010 04:55

спасибо, а как тогда сделать правильно конкатенацию с именем переменной?

Мараторий 28.01.2010 05:07

Если это глобальная переменная, то к ней есть доступ через свойство окна
p_10_pos === window.p_10_pos === window["p_10_pos"] === window["p_"+num+"_pos"]

mff 28.01.2010 07:55

Цитата:

Сообщение от Мараторий (Сообщение 42421)
window["p_"+num+"_pos"]

Большое спасибо Мараторий! :dance:

B@rmaley.e><e 28.01.2010 08:13

А если локальная, то
eval('p_'+num+'_pos = p_pos2');

Dmitry A. Soshnikov 28.01.2010 12:46

Цитата:

Сообщение от B@rmaley.e><e
А если локальная, то
eval

Зависит от реализаций. В Rhino, например, можно получить доступ к объекту активации: http://javascript.ru/blog/Dmitry-A.-...voystvo-parent

Но, если говорить о браузерной среде, то, кроссбраузерно - eval.


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