ホームページ > 記事 > ウェブフロントエンド > js の apply 関数と Math.max() 関数の問題点と違いの紹介
この記事では主に js の apply 関数と Math.max() 関数の問題を紹介します。それぞれの答えは記事の最後に詳しく説明されています。 .max.apply と Math.max の違い、興味のある方、一緒に見てみましょう
以下では、js の apply 関数と Math.max() 関数の問題を紹介します。具体的な内容は次のとおりです。
var arr=[1,3,6,3,7,9,2]; console.log(Math.max.apply(null,arr));
なぜこの方法で配列の最大値を計算できるのかがまだわかりません。まだ理解できません。jsの専門家からアドバイスをお願いします。
回答 1 Function.apply() は JS の OOP 機能であり、上記のコードの場合、次のように理解できます。関数を呼び出すメソッドです。パラメータは次のとおりです: apply(Function, Args)、
Function は呼び出されるメソッド、Args はパラメータ リスト、Function が null の場合、デフォルトは上記です、
つまり、Math.max.apply(null, arr)
は、
apply(Math.max, arr)
と考えることができます。そして、arrは、maxメソッドのパラメータリストです。つまり、applyを使用する場合、そのパラメータは、
Math.max(a, b, c, d, ...)
です。 、すべてのパラメータを配列に追加します。つまり、
arr = [a, b, c, d, ...]
が元の式に代入されます。
Math.max.apply(null, [a, b, c, d, ...])
は、実際には
Math.max(a, b, c, d, ...)
と同等です。ここで、applyを使用する利点は次のとおりです。一部の JS エンジンのパフォーマンスを向上させることです。
回答 2
Math.max()
メソッドは、次のような複数のパラメーターの受け渡しをサポートしています。 Math.max(1,4,2,3,7,5 , 6)
ただし、次のような配列をパラメーターとして直接渡すことはサポートされていません: Math.max(new Array(1,4,2,3,7,5,6))。
ここでは、配列を一つずつ分割してMath.max()メソッドに渡す方法さえあれば、配列を渡すメソッドが実装されています。 Math.max()
方法,支持传递多个参数,比如:Math.max(1,4,2,3,7,5,6)
但是它不支持直接传递一个数组作为参数,比如:Math.max(new Array(1,4,2,3,7,5,6))
JavaScriptのMath.max.applyとMath.maxの違い
JavaScriptのMath.maxメソッドは、指定されたパラメータの中で最大の数値を見つけることができます。> Math.max('1','2','3.1','3.2')
< 3.2
> Math.min(1,0,-1)
< -1
しかし、配列の場合はこのように呼び出すことはできません。
この時点で apply メソッドが使用されます:
apply 方法 (Function) (JavaScript) 调用函数,并用指定对象替换函数的 this 值,同时用指定数组替换函数的参数。 apply([thisObj[,argArray]]) thisObj 可选。 要用作 this 对象的对象。 argArray
巧みに配列を Math.max および Math.min に呼び出せるようにします。
> Math.max.apply(null, ['1','2','3.1','3.2']) < 3.2 > Math.min.apply(null, [1,0,-1]) < -1
以上、皆様の参考になれば幸いです。
関連記事:
サーバーサイドの戻りデータを元にjs処理を実装するAjaxアップロード方法
popのAjax実装-up no-refresh city 機能コードを選択
以上がjs の apply 関数と Math.max() 関数の問題点と違いの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。