javascript中的eval方法

eval method in javascript

本文关键字:方法 eval 中的 javascript      更新时间:2023-09-26

如果你有这样的

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

如果我们想从z中得到x(即y)的值,我们可以实现这样的

eval(z),它会给你"y"。

我的问题是,如果我把x作为一个像一样的数组

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

如何使用变量z获得像x[0],x[1],x[2]这样的x数组值。

我们不能像eval(z[0])那样使用,如果我们给出像eval[z]那样的[a,b,c],但我想直接访问单个数组元素。实现这一点的方法是什么。

请帮忙。

提前感谢。

如果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本身是全局对象的一个属性,对象用它来指代自己。)

您可以使用窗口

window[z][0]

只需使用eval(z)[0]。在执行eval步骤之后,而不是之前,您会得到一个数组。所以z[0]并没有真正定义。

只有在eval之后才能通过索引进行访问。

尝试:

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