javascript中的eval方法
eval method in javascript
如果你有这样的
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
相关文章:
- 递归使用 eval() 是检查程序执行的好方法吗?
- javascript eval方法语法
- 使用 eval 从字符串创建函数的不同方法
- 使用 eval() 的替代方法
- 如何将包含在 eval 方法中的两个文件作为线程运行
- 如何在不使用 eval 的情况下使不存在的(非成员,非全局)方法可调用
- 有没有一种方法可以在JavaScript中执行类似于window.eval()的jQuery
- 在返回作为字符串参数传递的值时使用eval()的正确方法
- 我们可以在 JavaScript 中使用 eval 方法创建 HTML 标签吗?
- 利用JavaScript's eval()方法
- 是否有任何非eval方法可以创建具有运行时确定名称的函数
- 有没有一种方法可以在不进行eval的情况下输入Highchart系列数据
- 在不使用eval的情况下在方法函数中传递固定参数
- 对象的Eval方法
- Javascript,可以在没有 eval 的情况下传递未声明的方法参数
- 使用eval将变量分配给方法.否则我该怎么做
- 替换 eval() 方法
- JavaScript,在不使用eval(Revearing模式)的情况下,将私有函数作为公共方法内的字符串调用
- Javascript:有没有一种方法可以使用字符串作为回调,而不需要eval()
- 在JavaScript中,' eval '是创建具有动态确定属性的函数的唯一方法吗?