2009-10-22 10 views

Répondre

8

Ceci est appelé une expression de fonction inline anonyme. Il crée une fonction et vous donne une référence à elle, semblable à 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 en array dans l'ordre. C'est une méthode standard dans ECMAScript cinquième édition et a été dans de nombreux navigateurs depuis un certain temps, mais pas JScript (IE). Je suppose que couchdb prend soin de cette question pour vous.

+0

Merci à tous pour vos bonnes réponses et votre réponse rapide :) –

+0

Ceci est la fonction de la carte dans CouchDB. Cela ne fonctionne pas dans le navigateur. Il fonctionne sur le serveur dans spidermonkey. Donc, vous pouvez utiliser toute dernière astuce Javascript que spidermonkey prend en charge – nexneo

+0

Ah, cela a du sens alors. Spidermonkey a soutenu les méthodes de la cinquième édition Array pour les âges. – bobince

0

forEach parcourt simplement tableau et appelle la fonction que vous passez à lui avec tous les éléments qu'il trouve.

Sachez que tous les navigateurs ne le supportent pas, il y a la fonction d'assistance $.forEach dans jQuery, c'est plus sûr en termes de support de navigateur.

+0

Comme indiqué dans la réponse acceptée, le moteur JS est côté serveur et suggère qu'une fonction jQuery est non seulement inutile, mais ne fonctionnera pas non plus. – radicand

1
function(tag) {...} 

est appelé "pour chaque" tag "dans doc.tags" avec l'argument "tag" est passé à la fonction lambda en question.