2014-01-17 141 views
-1

這段代碼有什麼問題?任何人都可以幫忙嗎?爲什麼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 <3,條件失敗 –

回答

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 

注:請確保您閱讀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

-1

while循環正在執行時,在第一次執行i=10i變量設置爲10;因此條件i<read.length(這裏... 10<3)保持爲假,因此循環將被終止。

請參閱eval()教程。

+0

why - one .. ??? –

0

試試這個代碼

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