Javascript Node.js:每个…;不工作
我想对每个。。。在带有Node.js(v0.4.11)的中 我是这样使用它的:Javascript Node.js:每个…;不工作,javascript,node.js,foreach,v8,Javascript,Node.js,Foreach,V8,我想对每个。。。在带有Node.js(v0.4.11)的中 我是这样使用它的: var conf = { index: { path: { first: "index.html", pattern: "index/{num}.html" }, template: "index.tpl", limit: 8 }, feed: { path: "feed.xml", temp
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);
}
我得到以下错误:
(配置中的var索引){
^^^^
node.js:134
抛出e;//process.nextTick error,或在第一次勾选时抛出“error”事件
^
SyntaxError:意外的标识符
在模块处编译(Module.js:397:25)
at Object..js(module.js:408:10)
在Module.load(Module.js:334:31)
at函数。_加载(module.js:293:12)
根据需要(module.js:346:19)
关于每个…在
中使用的信息,不幸的是节点不支持每个…在
中使用,即使它是在JavaScript 1.6中指定的。Chrome使用相同的JavaScript引擎,并且有类似的缺点
您必须满足于array.forEach(函数(项){/*etc*/})
编辑:来自谷歌的官方网站:
V8实现了中指定的ECMAScript
在同一个MDN网站上,它说,for each…in
在JavaScript 1.6中,它说它不在任何ECMA版本中-因此,推测它不在Node中。在Node.js支持的ECMAScript版本中,没有for each in
,目前只有firefox支持
需要注意的重要一点是,JavaScript版本只与Gecko(Firefox的引擎)和Rhino(总是落后于几个版本)相关.Node使用遵循ECMAScript规范的V8实现了从JavaScript 1.8到ECMAScript 5.1的转换器,这将允许您在webkit或Node上运行的代码中使用“for each”。这可能是一个旧问题,但为了保持更新,JavaScript中有一个forEach方法可用于NodeJS。
for (var i in conf) {
val = conf[i];
console.log(val.path);
}
这是来自网站的链接。
举个例子:
count = countElements.length;
if (count > 0) {
countElements.forEach(function(countElement){
console.log(countElement);
});
}
对于那些使用php的用户:
//add this function
function foreach(arr, func){
for(var i in arr){
func(i, arr[i]);
}
}
用法:
foreach(myArray, function(i, v){
//run code here
});
与php版本类似:
foreach(myArray as i=>v){
//run code here
}
V8实现了ECMAScript。MDN文档显示了ECMA版本:none
有一个each.Sort.。for each
是一种替代语法,应该像原始问题中那样工作,但实际上它显然在“JavaScript 1.6”中,但在ECMAScript规范中没有,因此并不总是受支持。(即使在支持它的地方,我还是喜欢你答案中的语法。)是的,确实有一个each:@nnnnnn有一个,但不是EcmaScript。在使用MDN时,您应该始终小心,因为它的版本JavaScript并没有得到广泛支持。不要忘记对象。keys
要将对象的键转换为数组井,如果V8是这样运行的,我可以这样做。我可以在中为…使用,但是想要一些语法糖。谢谢你提供的信息。是的,这也是我想要的,但不是我想要的。现在我必须坚持这个版本。或者console.log(conf[I].path)
如果你用这个函数迭代数组,那么length
属性也会被包括在内,所以你需要防止它。