为什么eval()不适用于数组

问题描述:

这段代码有什么问题?任何人都可以帮忙吗?为什么eval()不适用于数组

var read=new Array("i=10","j=20","k=i*j"); 
for(var i=0;i<read.length;i++) 
{ 
    alert(eval(read[i])); 
} 

期待输出:

alert three times with values 10,20,200. 

但实际输出:

But alert Once with value 10. 
+3

你怎么看'的eval()'呢? –

+1

定义“不工作”。这不是一个问题描述。 – deceze

+0

第一个循环'alert(eval(i = 10))',下一步10

当循环执行的第一次,你要设置i = 10,与eval。所以环路立即爆发。

所以,你可能想改变循环变量别的东西,像这样

var read = new Array("i=10","j=20","k=i*j"); 
for(var idx=0; idx < read.length; idx++) 
{ 
    console.log(eval(read[idx])); 
} 

输出

10 
20 
200 

注:请确保您阅读this question and the answers to that question,前在你的代码中使用eval

+0

var read = new Array(“i = 10”,“j = 20”,“k = i * j” ) for(var index = 0; i user2807091

+0

即使这样做不起作用。 – user2807091

+0

@ user2807091您必须更改条件并增加部分。检查我的答案。 – thefourtheye

while循环正在执行时,在第一次执行i=10i变量设置为10;因此条件i<read.length(这里... 10<3)保持为假,因此循环将被终止。

请参阅eval()教程。

+0

why - one .. ??? –

试试这个代码

var read=new Array("i=10","j=20","k=i*j"); 
for(var index=0;index<read.length;index++) 
{ 
alert(eval(read[index])); 
}