为什么eval()不能使用数组

时间:2014-01-17 10:32:18

标签: javascript 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 个答案:

答案 0 :(得分:3)

第一次执行循环时,您使用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

注意:在您的代码中使用eval之前,请务必先阅读this question and the answers to that question

答案 1 :(得分:0)

试试此代码

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

答案 2 :(得分:-1)

当循环执行时,在i=10的第一次执行时,i变量设置为10;因为条件i<read.length(此处为...... 10<3)仍为假,所以循环将被终止。

请参阅eval()教程。