Node.js:对于每个…在不工作

我想用Node.js(v0.4.11)中的for each ... in

我这样使用它:

 var conf = { index: { path: { first: "index.html", pattern: "index/{num}.html" }, template: "index.tpl", limit: 8 }, feed: { path: "feed.xml", template: "atom.tpl", limit: 8 } } for each (var index in conf) { console.log(index.path); } 

我得到以下错误:

  for each (var index in conf) { ^^^^ node.js:134 throw e; // process.nextTick error, or 'error' event on first tick ^ SyntaxError: Unexpected identifier at Module._compile (module.js:397:25) at Object..js (module.js:408:10) at Module.load (module.js:334:31) at Function._load (module.js:293:12) at require (module.js:346:19) at Object.<anonymous> (/home/paul/dev/indexing/lib/Index.js:3:13) at Module._compile (module.js:402:26) at Object..js (module.js:408:10) at Module.load (module.js:334:31) at Function._load (module.js:293:12) 

错误在哪里? for each ... in自Javascript 1.6以来支持。

请参阅MDN以获取有关for each ... in的使用情况的信息。

不幸的是,即使在JavaScript 1.6中指定,node也不支持for each ... in 。 Chrome使用相同的JavaScript引擎,并被报告具有类似的缺点。

你必须解决array.forEach(function(item) { /* etc etc */ })

编辑:从谷歌的官方V8网站:

V8按照ECMA-262的规定实现ECMAScript。

在同一个MDN网站上,它说for each ...in是在JavaScript 1.6中,它说,它不在任何ECMA版本 – 因此,大概是它没有从节点。

 for (var i in conf) { val = conf[i]; console.log(val.path); } 

https://github.com/cscott/jsshaper实现了从JavaScript 1.8到ECMAScript 5.1的翻译器,这将允许您在webkit或节点上运行的代码中使用“for each”。

Node.js支持的ECMAScript版本中没有for each in目前只支持firefox。

重要的是要注意的是,JavaScript版本只与Gecko(Firefox的引擎)和Rhino(后面总是有几个版本)有关。 节点使用遵循ECMAScript规范的V8