2009-12-09 33 views
0

喜歡:IE8會報告錯誤而無需聲明var item?

var result = eval('(' + response + ')'); 
var html = value = ''; 

for(item in result) 
{ 

} 

response是JSON響應。

它停在IE8的for..

如何解決這個問題?

result = [1,2,3]; 
for(item in result) 
{ 
... 
} 
+0

從來沒有聽說過,什麼是你想使用的代碼? – yoda 2009-12-09 07:27:19

+0

詳細說明你期望它做什麼,以及它在做什麼。 – 2009-12-09 07:28:52

+0

我認爲(結果)不可評估?所以它可能爲空或未定義 – 2009-12-09 07:31:27

回答

5

我在IE8,沒有問題測試的代碼JavaScript For...In Statement

編輯

我跑的時候得到了同樣的錯誤。

肯定不是循環的問題(不在IE8中工作),但'結果'對象中有什麼。

UPDATE:

我發現這個問題。

在IE8(不知道其他IE版本)單詞「項目」莫名其妙地是一個保留字或什麼。

這將工作:

var item; 
for(item in result) 
{ 
... 
} 

這不會(如果item沒有聲明):

for(item in result) 
{ 
... 
} 

這將工作:

for(_item in result) 
{ 
... 
} 
+1

事實證明,這是因爲缺乏這種說法:var item; 「你遇到過這個? – user198729 2009-12-09 07:57:51

+0

在我的更新文章中查看我的發現。 '物品'確實是罪魁禍首。 – 2009-12-09 08:51:24

+0

我永遠不會發現自己的真相... – user198729 2009-12-09 09:37:30

0

你應該明確聲明itemvar。使用for..in標準成語是如下,應僅在對象(非數組)用於迭代:

for (var item in result) { 
    if (!result.hasOwnProperty(item)) { 
     // loop body goes here 
    } 
}