Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】Function::Function.prototype.callerインスタンスアクセサプロパティの使い方

Function.prototype.callerインスタンスアクセサプロパティの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

Function.prototype.callerプロパティは、現在実行中の関数を呼び出した関数への参照を保持するプロパティです。このプロパティは、Functionオブジェクトのインスタンスからアクセスできるアクセサープロパティとして提供されます。具体的には、ある関数Aが関数Bを呼び出した場合、関数Bの内部からB.callerを参照すると、関数Aが返されるという挙動を示します。

しかし、このcallerプロパティはECMAScriptの標準仕様には含まれていない非標準の機能であり、その使用は推奨されません。特に、JavaScriptコードをより厳格に記述するための「厳格モード('use strict')」では、このプロパティにアクセスしようとするとTypeErrorが発生するか、常にnullを返すことになります。

現代のWeb開発では、セキュリティ上の懸念やパフォーマンスへの悪影響があるため、このcallerプロパティの使用は避けるべきであるとされています。関数がどのように呼び出されたかの情報を取得したい場合、より安全で標準的な方法、例えばスタックトレースの情報を利用するなどの代替手段を検討することが重要です。システムエンジニアを目指す初心者の方には、非推奨かつ非標準の機能であることを理解し、特別な理由がない限り使用を避けることを強くお勧めします。

公式リファレンス: Function.prototype.caller

構文(syntax)

1function innerFunction() {
2  console.log(innerFunction.caller);
3}
4
5function outerFunction() {
6  innerFunction();
7}
8
9outerFunction();

引数(parameters)

引数なし

引数はありません

戻り値(return)

Function | null

このプロパティは、関数が呼び出された元の関数、または null を返します。

関連コンテンツ