TIL 2020-10-24(パラメータ)
レベル2-2パラメータ
TIL List
1)パラメータと伝達パラメータ
この授業ではパラメータの概念から学んだことを簡単に説明します.
まずパラメータと伝達パラメータの意味を理解します.
関数宣言で使用される変数を「パラメータ」と呼びます.
名前に示すように、後で関数を呼び出すときにパラメータとして機能する変数.
関数を呼び出すときに使用されるのは「パラメータ」です.
「伝達パラメータ」です.
次のコードを見てください.
function timeToGoHome (speed, distance) {
let time = distance / speed;
return time;
}
timeToGoHome (20, 100);
speed, distance
のように、関数宣言で使用される変数をパラメータと呼ぶ.timeToGoHome (20, 100);
では、20, 100
の値が関数を呼び出すときに使用され、伝達パラメータ(arguments)と呼ばれる.2)伝達因子の長さが可変であれば?
1. Math.max, Math.さいしょうかんすう
Math.max
とMath.min
という関数によって問題を解決することができる.次のコードを見てください.
Math.max(3,5,8,10); // 10
Math.max(3,5,8,10,20); // 20
Math.min(3,5,8,10,100,1000); // 3
Math.max
関数は、パラメータの最大値を返します.Math.min
関数は、パラメータの最小値を返します.2. Math.最大関数の実装
では、今回は上記の2つの関数の働き方を自ら実現してみましょう.
function getMaxNum() {
}
getMaxNum(3,5,8); // 8
getMaxNum(3,5,8,10); // 10
まずMath.max
を実現するには、作成する前にどのような条件が必要ですか?どの値が入力されるか分からないので,伝達因子の長さは動的である.
伝達パラメータの最大値を返す必要があります.
3,5,8
に入ると8
を返し、3,5,8,10
に入ると10
を返す必要がある.伝達因子の長さが可変であれば,我々がこれまで行ったハードコーディング方式(予め値を決定する方式を指す)は解決できなかった.
この場合はRest Parameterを使用します.
まずRest Parameterについて知ります.
Rest ParameterはSpread演算子(...)関数パラメータを記述する形式を使用します.つまり、Rest Parameterを使用して、関数パラメータとしての値を配列に渡すことができます.
出典:https://jeong-pro.tistory.com/117[基本功を積むアマチュアコードブログ]
Rest Parameterをコードに適用しましょう.
function getMaxNum(...nums) {
console.log(nums)
}
getMaxNum(3,5,8); // [3,5,8]
getMaxNum(3,5,8,10); // [3,5,8,10]
まず、パラメータがどの値であるかにかかわらず、「整列」として返すことができます.伝達係数の最大値を返す必要がありますが、これは「配列」の形式であることを強調していました.
すなわち,配列を入力したので,配列法を用いてこの問題を解決する必要がある.
ここでは
reduce()
関数を使用します.reduce()関数は配列要素を繰り返し、(関数として)値を組み合わせることで特定の値を作成します.配列ではなく特定の値を返します.△もちろん順番に並べてもいいです.
通常、配列値を使用して結果を生成します.
(Array.prototype.reduce()関数MDNの説明)
function getMaxNum(...nums) {
return nums.reduce(function(acc,current) {
if(acc > current) {
return acc;
} else {
return current;
}
});
}
getMaxNum(3,5,8,10); // 10
reduce関数を説明するには、まず前に述べた概念を勉強し、これから単独でブログを書きます.いずれにしても,この方法により
Math.Max
関数は我々の手で実現した.3.argumentsオブジェクトの使用
Rest Parameterではなくargumentsというオブジェクトを別の方法で使用できます.
パラメータの簡単な説明は、関数を呼び出すときにスキップされたパラメータが配列形式で格納されているオブジェクトを意味します.
一言で言えば、オブジェクトで、並んでいるような友達です.
まだ分からないので、次のコードを見てください.
function getMaxNum() {
console.log(arguments);
}
getMaxNum(3,5,8,10);
getMaxNum(3,5,8,10);
を行うと、パラメータオブジェクトに以下の内容が含まれます.{0:3, 1:5, 2:8, 3:10}
0番目のインデックスは3で、1番目のインデックスは5で、このように配列の形式に似ています.実際,この方法は以前ES 5方式で問題を解決していた.もっと便利で、最新技術のRest Parameterを書きましょう.
3)パラメータにデフォルト値を追加する場合は、次の操作を行います。
これもES 6が導入した技術です.
例えば、仁川空港からどのフライトに到着するかを出力すると
仁川空港をデフォルトとすることができる.
コードで次のように記述します.
function getRoute (destination, departure = 'ICN') {
return '출발지: ' + departure = ', ' + '도착지: ' + destination;
}
getRoute ('PEK'); // '출발지: ICN, 도착지: PEK'
これはparentパラメータに「ICN」文字列が割り当てられている様子です.文字列に加えて、数値、オブジェクトなどの任意のタイプを割り当てることができます.
このようにデフォルト値を設定する方法もあります.
Reference
この問題について(TIL 2020-10-24(パラメータ)), 我々は、より多くの情報をここで見つけました https://velog.io/@drata313/TIL-2020-10-24-매개변수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol