Je voulais utiliser for each ... in
avec Node.js (v0.4.11).
Je l'utilise comme ça:
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);
}
Je reçois l'erreur suivante:
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)
Où est l'erreur? for each ... in
est supporté depuis Javascript 1.6.
Voir MDN pour plus d'informations sur l'utilisation de for each ... in
.
Malheureusement, le noeud ne supporte pas for each ... in
, Même s'il est spécifié dans JavaScript 1.6. Chrome utilise le même moteur JavaScript et rapporté comme présente une lacune similaire.
Vous devrez vous contenter de array.forEach(function(item) { /* etc etc */ })
.
EDIT: sur le site officiel de Google V8:
V8 implémente ECMAScript comme spécifié dans ECMA-262 .
Sur le même site Web MDN où il est indiqué que for each ...in
Est en JavaScript 1.6, il est indiqué qu'il ne figure dans aucune version d'ECMA - d'où, vraisemblablement, son absence de Node.
for (var i in conf) {
val = conf[i];
console.log(val.path);
}
https://github.com/cscott/jsshaper implémente un traducteur de JavaScript 1.8 à ECMAScript 5.1, ce qui vous permettrait d'utiliser "pour chaque" dans le code exécuté sur le Webkit ou le nœud.
Il n'y a pas for each in
dans la version de ECMAScript prise en charge par Node.js, actuellement uniquement prise en charge par Firefox.
La chose importante à noter est que les versions JavaScript ne concernent que Gecko (le moteur de Firefox) et Rhino (qui a toujours quelques versions de retard). Node utilise la V8 qui suit les spécifications ECMAScript
C'est peut-être une vieille question, mais pour garder les choses à jour, il existe une méthode forEach en javascript qui fonctionne avec Node JS. Voici le lien depuis le docs . Et un exemple:
count = countElements.length;
if (count > 0) {
countElements.forEach(function(countElement){
console.log(countElement);
});
}
pour ceux habitués à php:
//add this function
function foreach(arr, func){
for(var i in arr){
func(i, arr[i]);
}
}
usage:
foreach(myArray, function(i, v){
//run code here
});
similaire à la version php:
foreach(myArray as i=>v){
//run code here
}