60 votes

Node.js : pour chacun… en ne fonctionnant pas

Je voulais utiliser for each ... in avec Node.js (v0.4.11).

Je l'utilise comme ceci :

 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);
}

J'obtiens 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 pris en charge depuis Javascript 1.6.

Voir MDN pour plus d'informations sur l'utilisation de for each ... in .

72voto

ace Points 3344
for (var i in conf) {
  val = conf[i];
  console.log(val.path);
}

6voto

https://github.com/cscott/jsshaper implémente un traducteur de JavaScript 1.8 vers ECMAScript 5.1, qui vous permettrait d'utiliser 'for each' dans le code exécuté sur webkit ou node.

2voto

Juan Mendes Points 31678

Il n'y a pas de for each in dans la version d'ECMAScript prise en charge par Node.js, uniquement prise en charge par firefox actuellement.

La chose importante à noter est que les versions JavaScript ne concernent que Gecko (le moteur de Firefox) et Rhino (qui est toujours en retard de quelques versions). Node utilise V8 qui suit les spécifications ECMAScript

2voto

toing_toing Points 945

C'est peut-être une vieille question, mais juste pour garder les choses à jour, il existe une méthode forEach en javascript qui fonctionne avec NodeJS. Voici le lien de la doc . Et un exemple :

      count = countElements.length;
        if (count > 0) {
            countElements.forEach(function(countElement){
                console.log(countElement);
            });
        }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X