2

以下のコードを理解するのに苦労しています。私は Java のバックグラウンドを持っています。これはなんと読むべきでしょうか?私が見るべき良い Java > Javascript の本/チュートリアルはありますか?

function sum(numbers) {
   var total = 0;

   forEach(numbers, function (number) {
      total += number;
   });

   return total;
}
show(sum([1, 10, 100]));

http://eloquentjavascript.net/chapter6.htmlから抽出

forEach(numbers, function (number)... コードを見ています。匿名関数はどこから「数値」を取得しますか?

4

3 に答える 3

5

のソースを見てくださいforEach

function forEach(array, action) {
  for (var i = 0; i < array.length; i++)
    action(array[i]);
}

forEachは、配列とコールバック(つまり関数)の 2 つの引数を受け入れます。ループ内でコールバックが呼び出され、毎回「現在の」配列要素が引数として渡されていることがわかります。それが、コールバックの正式なパラメーターnumberに入ります。

これを別の言い方をすれば、これは簡単に理解できます。

function hello(what) {
    alert("Hello " + what);
}

hello("world");

コールバックとして使用するhelloと、次のようなコードになります。

function say(callback, what) {
    callback(what);
}

say(hello, "world");

実際に見てください

最後に、コールバックがどのように機能し、どのような用途で使用されるかを調べると、おそらく役立つでしょう。これが、この件に関する私の別の答えです。

于 2013-05-30T08:10:14.640 に答える
2

数字から数字を取得します。foreach が言っていることは、数値の各要素に対して、その要素で無名関数を呼び出すということです。次に、その要素は数値と呼ばれますが、何とでも呼ぶことができます。

于 2013-05-30T08:10:02.703 に答える
1

あなたが混乱しているのは、forEach の根底にあるメカニズムが表示されていないということです...こじ開けると、その関数は 2 番目のパラメーターとして無名関数を期待していることがわかります。 IT に組み込む必要があります。そのため、関数を実行すると、その parm が入力されることが期待できます。異なる言語から来たときは確かに耳障りですが、物事が設計どおりに機能することを信頼する必要があります.

于 2013-05-30T08:14:29.447 に答える