2017-07-21 6 views
1

を必要と私はちょうどこのfindMax()関数に疑問を抱いた:「私は」カウンタであることを私は理解しJavaScriptのfindMax()の例 - 私はJavaScriptの上W3Schoolsのチュートリアルを通じてつもり説明

function findMax() { 
    var i; 
    var max = -Infinity; 
    for (i = 0, i < arguments.length; i++) { 
     if (arguments[i] > max) { 
      max = arguments[i]; 
     } 
    } 
    return max; 
} 

関数はすべてがカウントされ、カウントが1ずつ増加するまで続きます。理解できないもの - if文(arguments [i]> max)を作成すると、findMax( ) 関数? if文にiを渡すと、最大の数が戻されるのはなぜですか?

+1

それぞれの引数 'argument [i]'に対して、それが以前に知られていた最大 'max'より大きいかどうかを調べる必要があります。 –

+0

ループは関数に渡される引数を反復処理し、 'arguments [i]'は現在の引数です。 'max'に現在格納されているものよりも多い場合は、その番号で' max'を更新してください。ループが完了すると、 'max'が反復された最大の数になります。 – adeneo

+0

'for'ループの繰り返しごとに' max'と 'arguments [i]'の値を出力することを検討してください。 –

答えて

2

、ループはmaxに保存され、現在の最高値よりもより高いかどうかを確認するために引数アレイとそれぞれの値をチェックしています。そうでなければ、次のものに移ります。そうであれば、maxを新しい最高値に変更します。ループがarguments配列の各値をチェックすると、関数は最高値(max)を返します。

+0

ありがとうございました! – Robert

0

if文は、iの値を直接見ていません。代わりに、配列argumentsの特定の値へのインデックスとして使用されます。
あなたが既に見たすべての値より高い値を見つけるたびに、これが新しい最大値であることを意味します。コードの特定の行に

0

あなたはmaxiと比較されていることを考えているようです。そうではありません。 iは、argumentsの要素をループするために使用されています。

は、あなたがこのfindMax(1, 2, 3, 4, 5)ようfindMaxを呼び出すことを言うことができます。次にarguments[1, 2, 3, 4, 5]に等しい。その後、何が起こる

は、あなたのためのループがargumentsの各要素を反復処理するということです。

  • if (arguments[0] > max)は、Is 1> -Infinityと同じですか? (はい)
  • if (arguments[1] > max)はIs 2> 1と同じですか? (はい)
  • if (arguments[2] > max)はIs 3> 2と同じですか? (はい)
  • if (arguments[3] > max)はIs 4> 3と同じですか? (はい)
  • if (arguments[4] > max)はIs 5> 4と同じですか? maxとあなたに5を与える(はい)

関連する問題