Node.js:对于每个…在不工作
Node.js: for each … in not working
我想使用for each ... in
与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",
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)
错误在哪里?从Javascript 1.6开始支持for each ... in
。
for each ... in
的使用请参见MDN
不幸的是node不支持for each ... in
,即使在JavaScript 1.6中指定了它。Chrome使用相同的JavaScript引擎,据报道有类似的缺点。
你将不得不满足于array.forEach(function(item) { /* etc etc */ })
。
编辑:来自Google V8官方网站:
V8实现ECMA-262中指定的ECMAScript。
在同一个MDN网站上,它说for each ...in
在JavaScript 1.6中,它说它不在任何ECMA版本中-因此,推测它不在Node中。
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'。
这可能是一个老问题,但只是为了保持更新,javascript中有一个与NodeJS一起工作的forEach方法。这是文档中的链接。还有一个例子:
count = countElements.length;
if (count > 0) {
countElements.forEach(function(countElement){
console.log(countElement);
});
}
在Node.js支持的ECMAScript版本中没有for each in
,目前只有firefox支持。
需要注意的重要事情是JavaScript版本只与Gecko (Firefox的引擎)和Rhino(总是落后几个版本)相关。Node使用V8,它遵循ECMAScript规范
对于习惯使用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
}
- 如何包含特定于每个视图angularjs的javascript文件
- 如何在category.php中执行jquery,这应该适用于类别wordpress中的每个帖子
- 动画功能不应用于每个元素
- Instagram客户端ID是否特定于每个使用它的人
- jQuery$.每个都正常工作,但产生TypeError
- 自动完成搜索无法正常工作,请不要迭代$中的所有元素.每个ul-li都会及时显示响应
- 使用HTML和任何服务器端语言(PHP,.net,ruby)制作的网站是否可以在每个具有浏览器的设备上工作
- jQuery拖放然后打开特定于每个列表项的警报
- Bootstrap's弹出窗口只工作于按钮-不锚或跨度
- 函数只作用于每个元素的第一个子元素
- jQuery如何使slideToggle应用于每个项目
- 如何让鼠标悬停功能在多个图像上工作,每个图像都有单独的附带文本
- 替换为只工作于第一个子元素
- 我使用jquery next和cost选项只选择一个元素,但这适用于每个元素的类
- 添加一个相当于每个锚点的onMouseDown属性'类或文档中的s HREF属性
- 获取高度并应用于每个元素失败
- 将我的视频皮肤应用于每个视频标签(原版 java 脚本)
- 让函数分别作用于每个元素
- 使. slidetoggle特定于每个列表
- IE9:为什么设置“-ms-transform”;工作于css,但不能与jquery.css()