function キーワードは、式の中で関数を定義するために使用されます。
構文
function [name]([param1[, param2[, ..., paramN]]]) {
statements
}
引数
name- 関数名。省略可。省略した場合、関数は無名関数として認識されます。name は関数内でローカルです。
paramN- 関数に渡される引数の名前です。
statements- 関数の本体を構成するステートメントです。
説明
関数式は関数宣言とよく似ており、ほとんど同じ書式でもあります(※参照: function )。関数式と関数宣言の主な相違点は、関数名です。関数式では、匿名関数を生成するために、関数名を省略できます。 関数式は、定義するとすぐに実行する IIFE (即時実行関数)として使用できます。詳細については、 functions の章を見てください。
例
次の例では、引数の 2 乗を返す無名の関数を定義し、x に割当てています。
var x = function(y) {
return y * y;
};
名前付き関数式
関数内でその関数自身を参照する必要がある場合は、名前付き関数式にする事でこれを実現できます。この名前は関数内(スコープ)のローカルです。非標準ではありますが、これは arguments.callee を用いて避けることもできます。
var math = {
'factorial': function factorial(n) {
if (n <= 1)
return 1;
return n * factorial(n - 1);
}
};
仕様
| 仕様 | ステータス | コメント |
|---|---|---|
| ECMAScript 2017 Draft (ECMA-262) Function definitions の定義 |
ドラフト | |
| ECMAScript 2015 (6th Edition, ECMA-262) Function definitions の定義 |
標準 | |
| ECMAScript 5.1 (ECMA-262) Function definition の定義 |
標準 | |
| ECMAScript 3rd Edition (ECMA-262) Function definition の定義 |
標準 | 初期定義。JavaScript 1.5 で実装。 |
ブラウザ実装状況
| 機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| 基本サポート | (有) | (有) | (有) | (有) | (有) |
| 機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| 基本サポート | (有) | (有) | (有) | (有) | (有) | (有) |