Mozilla's getting a new look. What do you think? https://mzl.la/brandsurvey

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

Function コンストラクタや function 演算子 (function 式) を使っても関数を宣言できます。

書式

function name([param,[, param,[..., param]]]) {
   [statements]
}
name
関数名。
param
関数に渡される引数の名前。関数は最大255の引数を持てます。
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 を使う

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

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

仕様

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

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート (有) (有) (有) (有) (有)
sloppy モードで許可 49.0        
機能 Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
基本サポート 未サポート (有) (有) (有) (有) (有) (有)
sloppy モードで許可 未サポート 49.0         49.0

参照

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

タグ: 
 このページの貢献者: yyss, teoli, dreissig.jahrhundert, ethertank, Mgjbot, Yuichirou, Hfjapancom
 最終更新者: yyss,