function 宣言は、指定されたパラメータで関数を宣言します。
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Function コンストラクタや 関数式 を使っても関数を宣言できます。
書式
function name([param,[, param,[..., param]]]) { [statements] }
name- 関数名。
param- 関数に渡される引数名。引数の最大数は、エンジンによって変わります。
statements- 関数の本体を構成する文。
説明
function 宣言で作成された関数は Function オブジェクトであり、Function オブジェクトの全てのプロパティ、メソッド、振る舞いを持ちます。関数についての詳しい情報は Function を見てください。
関数は式の中でも宣言できます (関数式をご覧ください)。
デフォルトでは、関数は undefined を返します。値を返すには、関数は必ず return 文を使って返す値を指定しなければいけません。
条件付きで作成する関数
関数は条件文中でも宣言させられます。つまり、関数定義は if ステートメント内でネストさせられます。Mozilla を除くほとんどのブラウザはこのような条件付き宣言を条件なしとして扱い、条件が真であるかに関係なく関数を作成します。概要はこちらの記事をご覧ください。これらは使用するべきではなく、その代わりに条件付き作成には関数式を使用します。
関数宣言の巻き上げ
JavaScript の関数宣言は、関数の定義を巻き上げます。関数を宣言する前に使用することができます:
hoisted(); // logs "foo"
function hoisted() {
console.log('foo');
}
関数式は巻き上げられないので注意してください:
notHoisted(); // TypeError: notHoisted is not a function
var notHoisted = function() {
console.log('bar');
};
例
function を使う
次のコードは、商品 a、b、c の販売個数が与えられたときに、売上全体の総額を返す関数を宣言します。
function calc_sales(units_a, units_b, units_c) {
return units_a*79 + units_b * 129 + units_c * 699;
}
仕様
ブラウザ実装状況
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-dataand send us a pull request.
| デスクトップ | モバイル | サーバー | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
function | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox 完全対応 1 | IE 完全対応 3 | Opera 完全対応 3 | Safari 完全対応 1 | WebView Android 完全対応 1 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 10.1 | Safari iOS 完全対応 1 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 あり |
| Trailing comma in parameters | Chrome 完全対応 58 | Edge 完全対応 14 | Firefox 完全対応 52 | IE 未対応 なし | Opera 完全対応 45 | Safari 完全対応 10 | WebView Android 完全対応 58 | Chrome Android 完全対応 58 | Firefox Android 完全対応 52 | Opera Android 完全対応 43 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 7.0 | nodejs 完全対応 8.0.0 |
凡例
- 完全対応
- 完全対応
- 未対応
- 未対応