对于每个... in循环未运行:语法错误丢失(

时间:2013-09-20 15:02:28

标签: javascript firefox for-loop

这对于每个... in循环都没有运行,尽管它是mozilla Javascript guide关于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/

THX,

4 个答案:

答案 0 :(得分:4)

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

您的代码应该在最后看起来像这样:

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函数确保您不会意外地循环继承方法。

答案 1 :(得分:2)

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

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
  

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

答案 2 :(得分:0)

From this page似乎已弃用“for each”(for-space-each)。所以发动机正在寻找一个(之后,例如(

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

答案 3 :(得分:0)

for each ... in语句作为ECMA-357(E4X)标准的一部分已弃用。默认情况下将禁用E4X并在将来将其删除,但由于向后兼容性考虑因素,不会禁用和删除每个... in。考虑使用...代替。

for each...in