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

pvo*_*orb 59 javascript foreach v8 node.js

我想使用for each ... inNode.js(v0.4.11).

我这样使用它:

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);
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

        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)
Run Code Online (Sandbox Code Playgroud)

哪里出错了?for each ... in从Javascript 1.6开始支持.

有关使用情况的信息,请参阅MDNfor each ... in.

S M*_*S M 121

不幸的是,节点不支持for each ... in,即使它是在JavaScript 1.6中指定的.Chrome使用相同的JavaScript引擎,据报道也有类似的缺点.

你必须得到满足array.forEach(function(item) { /* etc etc */ }).

编辑:来自谷歌的官方V8网站:

V8按ECMA-262中的规定实施ECMAScript .

在同一个MDN网站上,它表示它for each ...in是在JavaScript 1.6中,它表示它不在任何ECMA版本中 - 因此,可能是它缺少Node.

  • 不要忘记`Object.keys`将对象的键转换为数组 (7认同)

ace*_*ace 67

for (var i in conf) {
  val = conf[i];
  console.log(val.path);
}
Run Code Online (Sandbox Code Playgroud)

  • 或`console.log(conf [i] .path)` (4认同)

小智 6

https://github.com/cscott/jsshaper实现了从JavaScript 1.8到ECMAScript 5.1的转换器,它允许您在webkit或节点上运行的代码中使用"for each".