関数定義・関数定義の巻き上げ

メモ

  • 下記の方法で関数定義
  • 全てFunction【関数】オブジェクトを生成
  • function 宣言の場合、関数定義は巻き上げ (関数定義が、関数参照の後でも可)

構文説明
function 関数名  ( [ 可変長引数 ] ) { [ 処理コード ] } function 宣言
function [ 関数名( [ 可変長引数 ] ) { [ 処理コード ] } function 式
関数名を省略すると無名関数
関数名は再帰関数で使用
[new] Function  ( [ 可変長引数文字列 , ] 処理コード文字列 ) 明示的なFunction【関数】オブジェクトの生成
通常は未使用

// function 宣言
function func1(x, y) {
  return (x + y);
}
console.log(func1(1, 2));  // 出力:3

// function 式
var func2 = function (x, y) {
  return (x + y);
}
console.log(func2(1, 2));  // 出力:3

// 明示的なFunction【関数】オブジェクトの生成
var func3 = new Function("x", "y", "return (x + y);");
console.log(func3(1, 2));  // 出力:3
// 関数定義の巻き上げ
console.log(func(1, 2)); // 出力:3
function func(x, y) {    // 関数定義が、関数参照の後
  return (x + y);
}
/**
* 関数を返却
 * @return 関数
 */
function getFunc() {
/**
* 内部関数
   * @global
   * @param  {number} p1
   * @return {number} 二乗
   */
  function innerFunc(p1) {
    console.log(p1 * p1);
  }
  return innerFunc;
}

/**
* 関数の説明
 * @function
*/
var func = getFunc();
func(2);              // 出力:4
func(3);              // 出力:9

関連