IE8会在没有声明var项目的情况下报告for的错误吗?

时间:2009-12-09 07:23:50

标签: javascript internet-explorer-8 for-loop

喜欢:

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

for(item in result)
{

}

response是json的回复。

它停在IE8中的for..

如何解决这个问题?

修改

我在运行时遇到了同样的错误:

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

2 个答案:

答案 0 :(得分:5)

我在IE8中测试了来自JavaScript For...In Statement的代码,没问题。

绝对不是循环的问题(在IE8中不起作用),而是'result'对象中的内容。

更新:

我发现了这个问题。

在IE8中(不确定其他IE版本)“item”这个词不知何故是一个保留词或什么的。

这将有效:

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

这不会(如果未声明item):

for(item in result)
{
...
}

这将有效:

for(_item in result)
{
...
}

答案 1 :(得分:0)

您应该使用item明确声明var。使用for..in的标准习惯如下,并且只应用于对象(而不是数组)的迭代:

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