0

Secrets of the JavaScript NinjaMath.min()には、可変長リストを必要とするJavaScript の機能を回避するための次のコードを提供する例があります。

Example: Math.min(1,2,3,4,5);

list: [1,2,3,4,5]ただし、リストをループして現在の最小値を追跡する必要がないため、がある場合は問題があります。

本は、この問題を解決するために次のコードを使用すると述べています。

function smallest(arr) {
   return Math.min.apply(Math, arr);   
}

alert(smallest([1,2,3,4,5,6,-33]));

Math.min.apply(Math, arr)ボンネットの下はどうなりますか?

4

3 に答える 3

2

.applyメソッドthis「配列(またはオブジェクトのような配列)として提供された指定された値と引数を使用して関数を呼び出します。」

したがって、基本的には、関数を直接呼び出すときに、配列の各項目を個別のパラメーターとして渡したかのように機能します。

.apply()関数が使用するの値を設定する最初のパラメーター。この例は、直接呼び出した場合と同じようthisに機能するように渡されます。MathMath.min(...)

どの関数でも同じことができることに注意してください。

function someFunc(a,b,c,d) { ... }

someFunc(1,2,3,4);
// or
someFunc.apply(null, [1,2,3,4]);
于 2013-02-09T21:53:43.480 に答える
1

を使用applyすると、特定のインスタンスでメソッドを呼び出し、引数を配列として提供できます。だからあなたが書くとき

Math.min.apply(Math, arr);   

minクラスでメソッドを呼び出し、引数としてMath 渡しarrます。

于 2013-02-09T21:53:54.560 に答える
1

MDNドキュメントによるとFunction.prototype.apply

指定されたこの値と配列(またはオブジェクトのような配列)として提供された引数を使用して関数を呼び出します。

于 2013-02-09T21:53:55.437 に答える