除了firefox之外,每个循环都无法在主流浏览器中运行

时间:2012-12-11 12:59:44

标签: javascript google-chrome firefox internet-explorer-9

我的代码:

<script type="text/javascript">
for each ( var movie in ['Endhiran The Robot','Shivaji The Boss','Anbulla Rajinikanth'] )
    document.writeln(movies + "<br/>");
</script>

在Firefox中,我的输出为

Endhiran The Robot
Shivaji The Boss
Anbulla Rajinikanth

但在IE9Chrome Version 23.0.1271.95 m中,for each无效,文档上没有任何内容

2 个答案:

答案 0 :(得分:4)

for each构造是ECMAScript语言的扩展;它在E4X规范中定义,并未得到广泛支持。

我认为只有Firefox在HTML脚本微观世界中支持它,并且已被弃用:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/for_each...in

要迭代数组,可以使用普通的for循环:

var movies = ['Endhiran The Robot', 'Shivaji The Boss', 'Anbulla Rajinikanth'];
for (var i = 0; i < movies.length; ++i) {
  document.writeln(movies[i] + "<br/>");
}

答案 1 :(得分:3)

JavaScript中没有for each,这是非标准扩展。

有新的ES5 forEach function,在现代浏览器中得到了很好的支持,但当然不是旧的浏览器:

['Endhiran The Robot','Shivaji The Boss','Anbulla Rajinikanth'].forEach(function(movie) {
    document.writeln(movie + "<br/>");
});

Stack Overflow上this other answer的其他几个选项。 (问题提到了jQuery,但答案涵盖了普通的JavaScript和jQuery选项。)