JavaScript.js#5関数


💻JavaScript.jsシリーズは簡単にJavaScriptをブラウズ📖

n.関数


JavaScriptで最も重要な概念は関数です.
JavaScriptの関数には、モジュール化処理、モジュール化処理、オブジェクト作成など、多くの機能があります.
関数には、通常のオブジェクトや配列などの宣言もあります.
同じ関数を作成する3つの方法があります.
関数の挙動は異なる方法で微細な違いがある.
  • 関数宣言
  • 関数式(funciton式)
  • 機能()ジェネレータ関数
  • がんばって


    関数を定義する際には、まず理解する必要がある重要な概念があります.
    HOISTINGです
    シースとは、変数または関数をどこで宣言しても、スキャンの上部の任意の場所で参照できることを意味します.
    add1(10, 5);
    // 15
    
    add2(10, 5);
    // 15
    
    function add1(a, b) {
      return a + b
    }
    
    function add2(a, b) {
      return a + b
    }
    上記の状況もハウスティンの一例です.
    以下で宣言したが、add 1およびadd 2関数が正しく呼び出された.

    関数宣言


    オブジェクト、配列と同様に、関数にも記号があります.
    function、関数名、パラメータリスト、および関数本体.
    function add(x, y) {
     	return x + y; 
    }
    これが関数宣言です.

    関数式


    JavaScriptでは、関数は値として扱われます.(一級オブジェクト)
    したがって、数値や文字列などの変数に関数を割り当てることもできます.
    関数式はES 6のArrow関数です.
    const add = function(x, y) {
    	return x + y;
    }
    
    // es6
    const add = (x, y) => x + y;
    
    add(5, 5)
    // 10
    ここで興味深いのは、実際に関数の関数名がオプションであることです.
    関数宣言文の例外は、関数名を指定する必要があります.
    関数式ではオプションです.
    関数式は匿名関数と呼ばれることがあります.

    関数宣言


    オブジェクトにはObjectというコンストラクション関数があり、配列にはArrayという関数があります.
    関数にもFunctionというキーワードがあります.
    コンストラクション関数はnewを使用する必要があります.
    const add = new Function('x', 'y', 'return x + y');
    
    add(5, 5);
    // 10
    しかし宣言はあまり書かれていない.性能も理想的ではありません.

    関数のずれを避ける方法


    その前に、ホスティングについて簡単に紹介しました.
    ハウスティンにも利点がありますが、関数を宣言する前に借りる方法を取っています.
    コードの構造が乱雑になる可能性があります.したがって、ダグラス・クラークフォードは関数式のみを使用することを提案した.
    add1(10, 5);
    // 15
    
    add2(10, 5);
    // 15
    
    function add1(a, b) {
      return a + b
    }
    
    function add2(a, b) {
      return a + b
    }
    上記のコードで関数を関数式に置き換えると、シースが除去されます.
    add1(10, 5);
    //  Cannot access 'add1' before initialization
    add2(5, 5);
    //  Cannot access 'add2' before initialization
    
    const add1 = (a, b) => a + b;
    
    const add2 = (a, b) => a + b;
    

    オブジェクトとしての関数


    関数はオブジェクトです.専門性を持つこともできます
    function add(x, y) {
    	return x + y;
    }
    
    add.results = 5;
    console.log(add.results);
    // 5
    関数は通常のオブジェクトであるため、変数や配列内の要素、オブジェクトのプロパティなどを割り当て、関数のパラメータや戻り値を返し、プロパティを動的に作成して割り当てることができます.
    この点はJavaScriptが関数式プログラミングを行う原動力である.

    関数のプロトタイプ


    すべての関数はオブジェクトであり、prototype propertyがあります.
    Prototypeにはconstructorというpropertyがあります.

    ここは少し複雑になり、
    関数のprototypeは、構造関数の親としてobjectprototypeもあります.
    そして、関数自体の上にもObject Prototypeがあります.
    これは、関数がコンストラクション関数という名前の作成者によってオブジェクトを作成できるためです.
    生成されたオブジェクトもオブジェクトなので、Object Prototypeが必要です.
    したがって、オブジェクトPrototypeは生成されたオブジェクトであり、関数自体もオブジェクトであるため、オブジェクトPrototypeは作成されます.

    各種関数の形式


    コールバック関数


    コールバック関数は、上述した関数式を用いた典型的な例である.
    ここで,コールバック関数とは,開発者が何らかの条件を提示し,これらの条件を満たすときに起動する関数である.
    最も簡単な例はイベントハンドラです.

    内部関数、モジュール


    内部関数とは、関数コードの内部にも関数を定義することです.
    これらの機能は、代表的なJavaScript機能(モジュールなど)の実装に重要な役割を果たします.
    function add(a, b) {
      const c = a + b;
      
      function plusOne() {
        console.log(c + 1);
      }
      
      console.log(c);
      plusOne();
    }
    
    add(2, 3); 
    // 5
    // 6
    内部関数は、定義された親で呼び出すことができます.変数もそうです.
    これがいわゆるモジュールです.
    例では、addはplusOneという新しい関数を作成し、内部で実行します.
    plusOneはcという変数を親から導入し,パラメータがなくても+1を用いることができる.
    ここでreturn値でplusOne関数を返すとします.どうなるの?
    function add(a, b) {
      const c = a + b;
      function plusOne() {
        return c + 1;
      }
      return plusOne();
    }
    
    const newAdd = add(3, 3);
    
    console.log(newAdd);
    // 7
    add関数は3と3を受け入れ、6をcという変数に格納し、plusOne()関数を+1で実行します.
    関数をnewAdd変数に格納し、得られた値は7です.
    これらのロールは、モジュールのロールです.

    の最後の部分


    オブジェクト、配列、関数!
    JavaScript開発者の多くが直面している挫折を理解してみましょう.call、apply、thisバインドです.🙂
    ソース
  • 内部JavaScript
  • 関数型JavaScriptプログラミング