CouchDB bookで次のコード フラグメントを見つけました。
function(doc) {
doc.tags && doc.tags.forEach(function(tag) {
emit(tag, 1);
});
}
関数(タグ)部分がどのように機能するかを説明できますか?
よろしくお願いいたします。
ラジ
CouchDB bookで次のコード フラグメントを見つけました。
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
順番に1回呼び出します。これはECMAScriptFifthEditionの標準的な方法であり、しばらくの間多くのブラウザーで使用されてきましたが、JScript(IE)では使用されていません。ただし、couchdbがその問題を処理してくれると思います。
function(tag) {...}
問題のラムダ関数に渡された「tag」引数を使用して、「doc.tags」の「for each」タグが呼び出されます。
forEach
単に配列を繰り返し処理し、見つかったすべての要素で渡された関数を呼び出します。
すべてのブラウザーがサポートしているわけではないことに注意してください。jQuery にはヘルパー関数$.forEach
があり、ブラウザーのサポートという点ではより安全です。