JavaScript「関数」

JavaScript

関数の宣言

function 関数名( 引数 ) {
処理
}
※引数は「,」で区切って複数指定できます

function funcname(param) {
  return "Hello, " + param + "!";
}

// 関数呼び出し
console.log(funcname("world")); // "Hello, world!"

関数宣言では、function キーワードを使用して関数名とパラメータを指定し、関数の本体を定義します。

関数式

関数式は、関数を変数に代入したり、無名の関数を作成したりするのに役立ちます。

function [関数名] ( 引数 ) {
処理
}
※関数名は省略可能です

let myfunc = function () { 
処理 
}
または、関数名を指定することも可能です

let myfunc = function func() {
処理
}

// 関数式
const add = function(x, y) {
  return x + y;
};

// 関数呼び出し
console.log(add(2, 3)); // 5

関数式では、const や let キーワードを使用して関数を変数に代入します。

アロー関数

アロー関数は、シンプルな関数を定義するための短縮形です。

変数 = ( 引数 ) => { 処理 }
※引数は複数指定できます、また引数1つの場合は「()」は省略できます
※処理が複数の場合は「{}」は必須ですが、1つの場合は省略できます

以下はアロー関数の例です。

// アロー関数
const multiply = (x, y) => x * y;

// 関数呼び出し
console.log(multiply(4, 5)); // 20

function コンストラクター

JavaScriptでは、Function コンストラクターを使用して新しい関数を作成できます。

// Function コンストラクターを使用して関数を作成
const sayHello = new Function('name', 'console.log("Hello, " + name + "!");');

// 関数呼び出し
sayHello("Alice"); // "Hello, Alice!"

Function コンストラクターは文字列形式で関数の本体を指定しますが、セキュリティ上のリスクがあるため、注意して使用する必要があります。

スコープについて

関数式で定義された関数(クロージャ)

関数式を使用して関数を定義すると、その関数はその定義時のスコープをキャプチャし、後でそのスコープ内で使用された変数や関数にアクセスすることができます。これをクロージャと呼びます。

function outerFunction() {
  const outerVar = "変数";

  return function innerFunction() {
    console.log(outerVar); 
  };
}

const closure = outerFunction();
closure(); // "変数" を表示

innerFunction は outerFunction のスコープ内で定義されているため、innerFunction は outerVar を参照できます。

クロージャ
クロージャは、 JavaScript では関数の入れ子が可能であることに加えて、内側の関数が外側の関数内で定義されたすべての変数や関数に対し自由にアクセスできます。
しかし、外側の関数は内側の関数内で定義された変数や関数にアクセスできません。

コメント