这对于每个... 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,
答案 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。考虑使用...代替。