function 宣言は、指定されたパラメータで関数を宣言します。

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 を使う

次のコードは、商品 abc の販売個数が与えられたときに、売上全体の総額を返す関数を宣言します。

function calc_sales(units_a, units_b, units_c) {
   return units_a*79 + units_b * 129 + units_c * 699;
}

仕様

仕様書 策定状況 コメント
ECMAScript Latest 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 の定義
標準  
ECMAScript 1st Edition (ECMA-262)
Function definition の定義
標準 最初期の定義。JavaScript 1.0 で実装。

ブラウザ実装状況

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.

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
基本対応Chrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり
Allowed in sloppy modeChrome 完全対応 49Edge ? Firefox ? IE ? Opera 完全対応 ありSafari ? WebView Android ? Chrome Android ? Edge Mobile ? Firefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android ? nodejs ?
Trailing comma in parametersChrome 完全対応 58Edge ? Firefox 完全対応 52IE ? Opera 完全対応 45Safari ? WebView Android 完全対応 58Chrome Android 完全対応 58Edge Mobile ? Firefox Android 完全対応 52Opera Android 完全対応 45Safari iOS ? Samsung Internet Android 完全対応 7.0nodejs 完全対応 8.0.0

凡例

完全対応  
完全対応
実装状況不明  
実装状況不明

参照

ドキュメントのタグと貢献者

タグ: 
最終更新者: Uemmra3,