apply と Math.max() の使用法と違い

php中世界最好的语言
リリース: 2018-05-08 14:29:51
オリジナル
2143 人が閲覧しました

今回は、apply と Math.max() の使用法と違い、apply と Math.max() の使用法と違いに関する 注意点 についてお届けします。実際のケースを紹介します。見てみましょう。

var arr=[1,3,6,3,7,9,2];
console.log(Math.max.apply(null,arr));
ログイン後にコピー

これでなぜ 配列 の最大値を計算できるのかがまだわかりません。まだ理解できません。jsの専門家からアドバイスをお願いします。

回答 1

Function.apply() は、一般に 継承 をシミュレートし、この目的を拡張するために使用されます。 apply は関数を呼び出すメソッドで、パラメータは 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, ...])
ログイン後にコピー
と同等になります。 ここで、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))すべての関数には apply (スコープ チェーン、パラメーター) メソッドがあり、この関数の「パラメーター」は配列を受け取り、配列内の各値が分離されて呼び出し元に渡されます。

JavaScriptのMath.max.applyとMath.maxの違い

JavaScriptのMath.maxメソッドは、指定されたパラメータの中で最大の数値を見つけることができます。

Math.max(a, b, c, d, ...)
ログイン後にコピー
ログイン後にコピー
しかし、配列の場合はこのように呼び出すことはできません。 この時点で apply メソッドが使用されます:

> Math.max('1','2','3.1','3.2')
< 3.2
> Math.min(1,0,-1)
< -1
ログイン後にコピー

オプション。 関数に渡される引数のセット。 巧みに配列を Math.max および Math.min に呼び出せるようにします。

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

EL コンテキストパラメータを取得する手順の詳細な説明


テキストが指定された行数を超える場合は省略記号を追加します

以上がapply と Math.max() の使用法と違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート