Eval метод в JavaScript

0

если у вас есть что-то вроде этого

var x='y';
var z='x';

если мы хотим получить значение x (т.е. y) из z, мы можем добиться такого же

eval (z), который даст вам "y".

Мой вопрос: если у меня есть x как массив вроде

var x=[a,b,c];
var z='x';

как я могу получить значения массива x, такие как x[0],x[1],x[2] используя переменную z.

мы не можем использовать как eval(z[0]), если бы мы дали как eval[z] мы получим как [a,b,c] но я хочу получить доступ к отдельным элементам массива напрямую. Каким образом это достигается,

Пожалуйста помоги.

Заранее спасибо.

Теги:
arrays

4 ответа

6
Лучший ответ

Если x является глобальным, вы можете использовать window:

window[z][0] === a; // true

... но только если x является глобальным, и это, откровенно говоря, не очень хорошая идея.

Чтобы сделать это с помощью неглобальных объектов, поместите x на объект:

var obj = {x: [a, b, c]};

... и затем используйте obj:

obj[z][0] === a; // true

В обоих случаях это работает, потому что вы можете получить доступ к свойству объекта в JavaScript с помощью "точечной нотации" и имени имени литерала (foo.bar) или "заключенной в скобки записи" и имени свойства строки (foo["bar"]), Во втором случае вы можете иметь любое выражение для строки.

Причина window работает для глобальных переменных является то, что в JavaScript, все глобальные переменные свойства глобального объекта, а также в браузерах вы можете ссылаться, что глобальный объект с помощью символа window. (Фактически, само window является свойством глобального объекта, которое объект использует для обозначения самого себя).

3

Вы можете использовать окно

window[z][0]
1

Доступ через индексы может происходить только после eval.

Пытаться:

var x=['a','b','c'];
var z='x';
eval(z)[0];//this will give a
1

Просто используйте eval(z)[0]. У вас есть массив сразу после выполнения шага eval, а не раньше. Поэтому z[0] не определен.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню