1

CouchDB bookで次のコード フラグメントを見つけました。

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

関数(タグ)部分がどのように機能するかを説明できますか?

よろしくお願いいたします。

ラジ

4

3 に答える 3

9

これは、匿名インライン関数式と呼ばれます。関数を作成し、次のように記述した場合と同様に、関数への参照を提供します。

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

このarray.forEachメソッドは、指定された関数を各アイテムに対してarray順番に1回呼び出します。これはECMAScriptFifthEditionの標準的な方法であり、しばらくの間多くのブラウザーで使用されてきましたが、JScript(IE)では使用されていません。ただし、couchdbがその問題を処理してくれると思います。

于 2009-10-22T11:24:56.910 に答える
1
function(tag) {...} 

問題のラムダ関数に渡された「tag」引数を使用して、「doc.tags」の「for each」タグが呼び出されます。

于 2009-10-22T11:18:57.470 に答える
0

forEach単に配列を繰り返し処理し、見つかったすべての要素で渡された関数を呼び出します。

すべてのブラウザーがサポートしているわけではないことに注意してください。jQuery にはヘルパー関数$.forEachがあり、ブラウザーのサポートという点ではより安全です。

于 2009-10-22T11:18:50.590 に答える