Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

Function

BaselineWidely available *

Function オブジェクトは関数についてのメソッドを提供します。 JavaScript では、すべての関数が実際にはFunction オブジェクトです。

コンストラクター

Function()

新しいFunction オブジェクトを生成します。コンストラクターを直接呼び出すと関数を動的に生成することができますが、セキュリティや、eval() と似た性能の (ただし、はるかに重要性の低い) 問題を抱えます。ただしeval() とは異なり、Function コンストラクターはグローバルスコープで実行される関数のみを生成します。

インスタンスプロパティ

以下のプロパティはFunction.prototype で定義されており、すべてのFunction インスタンスで共有されています。

Function.prototype.arguments非推奨;非標準

この関数に渡された引数を表します。厳格モード、アロー関数、非同期関数、ジェネレーター関数については、arguments プロパティにアクセスするとTypeError が発生します。代わりに関数のクロージャ内でarguments オブジェクトを使用してください。

Function.prototype.caller非推奨;非標準

現在実行している関数を呼び出した関数を返します。厳格モード、アロー関数、非同期関数、ジェネレーター関数については、arguments プロパティにアクセスするとTypeError が発生します。

Function.prototype.constructor

インスタンスオブジェクトを作成したコンストラクター関数。Function のインスタンスの場合、初期値はFunction コンストラクターです。

以下のプロパティは、それぞれのFunction インスタンスが自分自身で持つプロパティです。

displayName非標準省略可

関数の表示名です。

length

関数によって期待される引数の数を指定します。

name

関数の名前です。

prototype

new 演算子付きでコンストラクターとして関数を使用する場合に使用されます。新しいオブジェクトのプロトタイプとなります。

インスタンスメソッド

Function.prototype.apply()

指定されたthis 値とオプションで引数を配列(または配列風オブジェクト)として渡し、指定された関数を呼び出します。

Function.prototype.bind()

新しい関数を作成し、呼び出されたときに、this を指定された値に設定します。オプションで、指定された一連の引数が、新しく結びつけられた関数が呼び出されたときに与えられた引数の前に付加されます。

Function.prototype.call()

指定されたthis 値とオプションで引数を渡し、指定された関数を呼び出します。

Function.prototype.toString()

関数のソースコードを表す文字列を返します。Object.prototype.toString メソッドを上書きします。

Function.prototype[Symbol.hasInstance]()

コンストラクター関数が、オブジェクトをコンストラクターのインスタンスの 1 つとして認識するかどうかを判断するための、既定の手順を指定します。instanceof 演算子によって呼び出されます。

Funciton コンストラクターと関数宣言の違い

Function コンストラクターで生成された関数は、生成コンテキストにクロージャを作りません。つまり常にグローバルスコープで生成されます。これを実行すると、Function コンストラクターの呼び出し元のスコープは入らず、自身のローカル変数とグローバル変数だけにアクセスできます。これは関数式のコードにeval() を使うのとは異なります。

js
// `var` でグローバルプロパティを作成var x = 10;function createFunction1() {  const x = 20;  return new Function("return x;"); // この `x` はグローバルの `x` を表す}function createFunction2() {  const x = 20;  function f() {    return x; // この `x` は上記のローカルの `x` を表す  }  return f;}const f1 = createFunction1();console.log(f1()); // 10const f2 = createFunction2();console.log(f2()); // 20

このコードはウェブブラウザーでは動作しますが、 Node.js ではf1()ReferenceError が発生します。x が見つからないためです。これは Node の最上位のスコープがグローバルスコープではなく、x はモジュールのローカルになるからです。

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-function-objects

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp