Pergunta

me deparei com o seguinte fragmento de código em um CouchDB livro .

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

Pode alguém explicar como é que funciona a função (tag) parte?

Obrigado e cumprimentos,

raj

Foi útil?

Solução

Isso é chamado de uma expressão função inline anônimo. Ele cria uma função e dá-lhe uma referência a ele, semelhante a se você tivesse escrito:

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

O método array.forEach chama a função dada uma vez para cada um dos itens na array em ordem. É um método padrão em ECMAScript quinta edição e tem sido em muitos navegadores, por algum tempo, mas não JScript (IE). Eu estou supondo couchdb cuida desse problema para você embora.

Outras dicas

function(tag) {...} 

é chamado "para cada" tag em "doc.tags" com o argumento de "tag" passado para a função lambda em questão.

forEach simplesmente itera sobre array e chamadas de função que você passar para ele com cada elemento que encontra.

Esteja ciente de que nem todo o suporte ao navegador isso, não há helper $.forEach função em jQuery, é mais seguro em termos de suporte do navegador.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top