1

这个 for each...in 循环没有运行,尽管它是 mozilla Javascript 指南中关于 for each...in 语句的直接副本。

var sum = 0;
var obj = {prop1: 5, prop2: 13, prop3: 8};
for each (var item in obj) {
  sum += item;

}

alert(sum); // prints "26", which is 5+13+8

jsFiddle:http: //jsfiddle.net/4fVSB/1/

我收到此错误:

SyntaxError: missing ( after for for each (var item in obj) {

这可能与我的javascript版本有关。出于某种原因,我的 FF 有 javascript 版本 1.5,而我确实安装了 FF 24.0。这个版本的FF不应该有最新的javascript版本吗?

小提琴看看我有什么版本的js:http: //jsfiddle.net/Ac6CT/

谢谢,

4

4 回答 4

4

正确的语法是just for(var item in obj),没有each。然后在实际循环中,您必须使用 . 访问数值(即 5、13 等)obj[item]

您的代码最后应如下所示:

var sum = 0;
var obj = {prop1: 5, prop2: 13, prop3: 8};
for(var item in obj) {
  if(obj.hasOwnProperty(item)){
    sum += obj[item];
  }
}

alert(sum);

hasOwnProperty函数确保您不会意外循环继承的方法。

于 2013-09-20T15:06:58.573 回答
2

只需使用常规 for 循环以避免任何后果

var sum = 0;
var obj = {prop1: 5, prop2: 13, prop3: 8};
for (var item in obj) {
  sum += obj[item];
}
alert(sum); // prints "26", which is 5+13+8

作为 ECMA-357 (E4X) 标准的一部分,不推荐使用 for each...in 语句。默认情况下,E4X 将被禁用并在未来被移除,但出于向后兼容性的考虑,不会禁用和移除 for each...in。考虑使用 for...of 代替。(请参阅错误 791343。)

于 2013-09-20T15:07:46.513 回答
0

从这个页面看来,“for each”(for-space-each)已被弃用。所以引擎正在寻找一个 ( 在 for 之后,例如 for(

我建议使用下划线库 _.each 或 jquery 中的等效项,例如 $(..).each()

于 2013-09-20T15:08:35.610 回答
0

作为 ECMA-357 (E4X) 标准的一部分,不推荐使用 for each...in 语句。默认情况下,E4X 将被禁用并在未来被移除,但出于向后兼容性的考虑,不会禁用和移除 for each...in。考虑使用 for...of 代替。

对于每个……在

于 2013-09-20T15:08:49.373 回答