Question

J'ai trouvé le fragment de code suivant dans un livre CouchDB .

function(doc) {
  doc.tags && doc.tags.forEach(function(tag) {
    emit(tag, 1);
  });
}

Quelqu'un peut-il expliquer comment fonctionne la partie fonction (balise)?

Merci et salutations

raj

Était-ce utile?

La solution

Ceci est appelé une expression de fonction inline anonyme. Il crée une fonction et vous en donne la référence, comme si vous aviez écrit:

function emitTag(tag) {
    emit(tag, 1);
}
doc.tags && doc.tags.forEach(emitTag);

La méthode array.forEach appelle la fonction donnée une fois pour chacun des éléments de array dans l'ordre. ECMAScript Fifth Edition est une méthode standard utilisée depuis un certain temps dans de nombreux navigateurs, mais pas dans JScript (IE). Je suppose que couchdb s’occupe toutefois de cette question pour vous.

Autres conseils

function(tag) {...} 

est appelé "pour chaque". balise dans & doc; doc.tags " avec le & tag; tag " argument passé à la fonction lambda en question.

forEach itère simplement un tableau et appelle la fonction que vous lui transmettez avec chaque élément trouvé.

Sachez que tous les navigateurs ne la prennent pas en charge, il existe une fonction d'assistance $. forEach dans jQuery, elle est plus sûre en termes de prise en charge de navigateur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top