Вопрос

Я наткнулся на следующий фрагмент кода в Книга CouchDB.

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

Может ли кто-нибудь объяснить, как работает функциональная часть (тег)?

Спасибо и с уважением,

радж

Это было полезно?

Решение

Это называется анонимным встроенным функциональным выражением.Он создает функцию и дает вам ссылку на нее, аналогично тому, как если бы вы написали:

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

В array.forEach метод вызывает данную функцию один раз для каждого из элементов в array по порядку.Это стандартный метод в пятом издании ECMAScript, который уже некоторое время используется во многих браузерах, но не в JScript (IE).Я предполагаю, что couchdb позаботится об этой проблеме за вас.

Другие советы

function(tag) {...} 

вызывается "для каждого" тега в "doc.tags" с аргументом "tag", передаваемым рассматриваемой лямбда-функции.

forEach просто выполняет итерацию по массиву и вызывает функцию, которую вы передаете ему с каждым найденным элементом.

Имейте в виду, что не каждый браузер поддерживает это, есть вспомогательная функция $.forEach в jQuery это безопаснее с точки зрения поддержки браузера.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top