javascript - tan - Node.js: para cada… en no funciona
npm (5)
Quería usar for each ... in
Node.js (v0.4.11).
Lo uso así:
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);
}
Obtuve el siguiente error:
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)
¿Dónde está el error? for each ... in
es compatible desde Javascript 1.6.
Consulte MDN para obtener información sobre el uso de for each ... in
.
Desafortunadamente, el nodo no es compatible for each ... in
, aunque está especificado en JavaScript 1.6. Chrome utiliza el mismo motor de JavaScript y se informa que tiene un defecto similar.
Tendrá que conformarse con array.forEach(function(item) { /* etc etc */ })
.
EDITAR: Desde el sitio web oficial de Google V8:
V8 implementa ECMAScript como se especifica en ECMA-262 .
En el mismo sitio web de MDN donde dice que for each ...in
está en JavaScript 1.6, dice que no está en ninguna versión de ECMA, por lo tanto, presumiblemente, su ausencia del Nodo.
Esto podría ser una qustion antigua, pero solo para mantener las cosas actualizadas, hay un método forEach en javascript que funciona con NodeJS. Aquí está el enlace de los docs . Y un ejemplo:
count = countElements.length;
if (count > 0) {
countElements.forEach(function(countElement){
console.log(countElement);
});
}
No hay for each in
la versión de ECMAScript compatible con Node.js, solo compatible con Firefox actualmente.
Lo importante a tener en cuenta es que las versiones de JavaScript solo son relevantes para Gecko (motor de Firefox) y Rhino (que siempre está detrás de algunas versiones). El nodo usa V8 que sigue las especificaciones de ECMAScript
https://github.com/cscott/jsshaper implementa un traductor de JavaScript 1.8 a ECMAScript 5.1, que le permitiría usar ''para cada'' en el código que se ejecuta en el kit o nodo web.
for (var i in conf) {
val = conf[i];
console.log(val.path);
}