JavaScript/@()

カテゴリ:Book:JavaScript#@()%20

関数呼び出し演算子 は、avaScript において関数を実行するための基本的なメカニズムであり、関数名に続いて括弧 () を付けることで関数を呼び出します。このセクションでは、関数呼び出しの構文、評価順序、および関連するルールについて説明します[1]

構文

MemberExpression[?Yield, ?Await] Arguments[?Yield, ?Await]
  • MemberExpression[?Yield, ?Await]: 関数を参照する式。YieldAwait は、ジェネレーター関数や非同期関数内での使用を制御するためのオプションのパラメータです。
  • Arguments[?Yield, ?Await]: 関数に渡される引数のリスト。YieldAwait は、ジェネレーター関数や非同期関数内での使用を制御するためのオプションのパラメータです。

関数呼び出しは、以下のように行われます:

functionName(arg1, arg2, ..., argN)

関数呼び出しの評価順序

関数呼び出しは、以下の順序で評価されます:

  1. 関数の評価: 関数名が評価され、関数オブジェクトが取得されます。
  2. 引数の評価: 引数が左から右の順に評価されます。
  3. 関数の実行: 関数が呼び出され、引数が関数に渡されます。

基本的な関数呼び出し

以下のプログラムは、基本的な関数呼び出しの例を示しています。

// 基本的な関数呼び出し
function greet(name) {
  return <code>Hello, ${name}!</code>;
}

const message = greet("Alice");
console.log(message); // "Hello, Alice!"

このプログラムでは、greet 関数が呼び出され、引数 "Alice" が渡されます。

メソッド呼び出し

以下のプログラムは、オブジェクトのメソッドを呼び出す例を示しています。

// メソッド呼び出し
const obj = {
  name: "Alice",
  greet: function() {
    return <code>Hello, ${this.name}!</code>;
  }
};

const message = obj.greet();
console.log(message); // "Hello, Alice!"

このプログラムでは、obj オブジェクトの greet メソッドが呼び出されます。

コンストラクタ呼び出し

以下のプログラムは、コンストラクタ関数を呼び出す例を示しています。

// コンストラクタ呼び出し
function Person(name) {
  this.name = name;
}

const person = new Person("Alice");
console.log(person.name); // "Alice"

このプログラムでは、Person コンストラクタ関数が new キーワードとともに呼び出され、新しいオブジェクトが作成されます。

オプショナルチェイニングを使用した関数呼び出し

以下のプログラムは、オプショナルチェイニングを使用して関数を安全に呼び出す例を示しています。

// オプショナルチェイニングを使用した関数呼び出し
const obj = {
  method: function() {
    return "method called";
  }
};

// オプショナルチェイニングを使用してメソッドを呼び出す
console.log(obj.method?.()); // "method called"
console.log(obj.nonExistentMethod?.()); // undefined

このプログラムでは、obj.method が存在する場合にのみ関数が呼び出されます。存在しないメソッドに対してはエラーが発生せず、undefined が返されます。

アロー関数の呼び出し

以下のプログラムは、アロー関数を呼び出す例を示しています。

// アロー関数の呼び出し
const add = (a, b) => a + b;
const result = add(2, 3);
console.log(result); // 5

このプログラムでは、アロー関数 add が呼び出され、引数 23 が渡されます。

高階関数の呼び出し

以下のプログラムは、高階関数(関数を引数として受け取る関数)を呼び出す例を示しています。

// 高階関数の呼び出し
function higherOrderFunction(callback) {
  return callback(10);
}

const result = higherOrderFunction((x) => x * 2);
console.log(result); // 20

このプログラムでは、higherOrderFunction が呼び出され、引数として渡されたアロー関数が実行されます。

注意点

  • this の挙動: 関数呼び出しにおける this の値は、呼び出し方法によって異なります。メソッド呼び出しでは this はオブジェクトを指しますが、単純な関数呼び出しでは thisundefined(strict モード)またはグローバルオブジェクト(非 strict モード)を指します。
  • 引数の評価順序: 引数は左から右の順に評価されます。この順序は重要な場合があります(例えば、引数が副作用を持つ場合)。
  • オプショナルチェイニング: 関数が存在しない可能性がある場合、オプショナルチェイニングを使用して安全に関数を呼び出すことができます。

脚註

  1. 関数呼び出しは、JavaScript の実行フローを制御するための重要な要素です。

外部リンク

カテゴリ:Book:JavaScript#@()%20 カテゴリ:JavaScript
カテゴリ:Book:JavaScript カテゴリ:JavaScript カテゴリ:Pages using the JsonConfig extension