関数式


    変数に代入した後、呼び出し

    // 関数式では定義の前に呼び出しはできない
    // 変数() // ReferenceError
    
    // 関数式による関数を変数に代入
    // 関数名を付けてはいるが、あまり意味がない
    let 変数 = function 関数(引数1, 引数2) {
      console.log(引数1 * 引数2)
    }
    
    // 呼び出しは変数名()
    変数(2, 3) // 6
    
    // 外部からは関数名ではアクセスできない
    // 関数(2, 3) // ReferenceError
    

    匿名関数

    // 関数式の匿名関数
    
    // 関数式での関数名は外部からはアクセスできない(ReferenceError)ため、
    // 名前を省略することが多い。
    let 匿名関数 = function(引数1, 引数2) {
      console.log(引数1 * 引数2)
    }
    匿名関数(2, 3) // 6
    

    定義したものをそのまま実引数や戻り値に

    関数式による関数は、特に匿名関数にして、実引数や戻り値として利用することが多い。

    // 関数式は定義したそのまま実引数や戻り値にできる
    
    function 関数宣言(引数) {
      console.log(typeof 引数 === 'function')
      // 戻り値が関数式による関数
      return function() { /*本体*/ }
    }
    
    // 実引数が関数式による関数
    let 戻り値 = 関数宣言(function() { /*本体*/ }) // true
    console.log(typeof 戻り値 === 'function') // true
    
    // なお、関数宣言による関数も、関数名や代入した変数をもって実引数や戻り値にできる
    関数宣言(関数宣言) // true
    let 変数 = 関数宣言
    関数宣言(変数) // true