呼び出しても、コンストラクタとして呼び出すのと同じ効果があります。渡される場合に、デフォルト値で初期化される形式上の引数を指定できます。詳細はデフォルト引数を参照してください。不特定多数の引数を配列として受け取る構文です。オブジェクトを使って、関数内部で関数の引数を参照することができます。現在実行中の関数に渡された引数を格納する配列風オブジェクト。現在実行中の関数を実行した関数。関数に渡された引数の数。メソッド)を定義することができます。定義するための構文は、オブジェクトリテラル構文を使用します。getオブジェクトのプロパティを、そのプロパティが検索されたときに呼び出される関数に束縛します。setオブジェクトのプロパティを、そのプロパティに代入しようとしたときに呼び出される関数に束縛します。似た、より短い構文で定義することができます。詳細はメソッド定義を参照してください。{}};コンストラクタか関数宣言か関数式か以下のものを比較してみて下さい。y;};相違点これらは全ておおよそ同じ働きをしますが、いくつか微妙に異なる点があります。関数名と関数が代入された変数の間には違いがあります。関数名は変える事ができませんが、関数が代入された変数は再代入する事ができます。関数名は関数本体の内部でのみ使用する事ができます。メソッドによってシリアライズしたときにも現れます。関数が代入された変数はそのスコープ内でのみ有効で、そのスコープは関数が宣言されたスコープを含んでいる事が保証されています。つめの例にあるように、関数名はその関数が代入される変数と違っていても構いません。お互いの間に関連性は有りません。関数宣言は同時にその関数名と同じ名前の変数を作成します。よって、関数式で定義されたものと違って、関数宣言で定義された関数は定義されたスコープ内でその名前によってアクセスできます。よって定義された関数は関数名を持ちません。いう名前を持っているかのように表示されます。このように出力されます。関数内部でアクセスできる変数ではありません。次の文はエラーになります。コンストラクタで定義されたものとは違い、関数宣言で定義された関数は、関数自体が宣言される前に使用する事ができます。alert('FOO!');}関数式で定義された関数は現在のスコープを継承します。関数がクロージャを形成します。グローバルスコープ以外はどんなスコープも継承しません。コンストラクタで定義された関数はそうではありません。コンストラクタに渡された関数本体を表す文字列が、評価されるたびに必ず解析されます。関数式の方がまだ高速です。コンストラクタはできる限り避けるべきでしょう。コンストラクタの文字列を解析することで生成された関数内で入れ子にされている関数式や関数宣言は、繰り返し解析されないことに注意してください。関数宣言は以下のような時には関数宣言ではなくなります。element)」でなくなった時。「ソース要素」はスクリプトや関数本体の中で入れ子にされていない文の事です。モードでは、ブロック内の関数はそのブロックに新しいスコープを形成します。モードでは禁止されています。一言、使わないでください。コードでは、ブロック内の関数宣言は奇妙な動作をします。次の例を見てください。定義されないとされています。これは標準において新しいパーツです。歴史的には、このことは仕様とならないまま残されていました。サポートする全てのブラウザは、これを同じように扱います。ブロックのスコープに限られます。条件付きで関数を定義するより安全な方法は、変数に関数式を代入することです。};}例フォーマットされた数値を返す次の関数は、数値の先頭にゼロを足して固定長にした形で表される文字列を返します。演算子を使うと関数が存在するかどうかを確かめる事ができます。いう関数のプロパティを持つかどうかを確かめるためのテストが行われます。持っていたら、それが使われます。なければ、他の行動が取られます。参照が使われているのに注目してください。ドラフトブラウザ実装状況このページの互換性一覧表は構造化データから生成されています。チェックアウトしてプルリクエストを送信してください。ノートを参照してください。実装ノートを参照してください。ユーザーが明示的にこの機能を有効にしなければなりません。ユーザーが明示的にこの機能を有効にしなければなりません。inbox.現在、ニュースレターは英語でのみ提供されています。従って私の個人情報を扱うことに同意します。