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.maxMath.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」文字列が割り当てられている様子です.
    文字列に加えて、数値、オブジェクトなどの任意のタイプを割り当てることができます.
    このようにデフォルト値を設定する方法もあります.