ECMAScript / ECMA-262 Edition 5.1ベースのJavaScript文法
関数とは、そこで定義された一定の処理を行い、その結果を返す、処理命令がひとまとまりになったブロックのことです。
関数は、その時々の状況に合わせた結果を受け取る為にその時点で算出されるなんらかの値を引数として渡すことが前提の関数と状況に関わらず、ある条件下で必ず実行され値を返さない関数などがあり、これらを区別して例えば後者をルーチン、サブルーチンと呼ぶ言語などもありますが、JavaScriptでは前者と後者について特に呼び分けはありません。
(クラスベースではクラス内で定義される関数をメソッドと呼びますが、)プロトタイプベースのオブジェクト指向スクリプトであるJavaScriptでは、プロパティと値のセットの集合であるオブジェクトが中心となり、そのオブジェクトのプロパティとして関数を持つことが可能となっており、この場合の関数を特にメソッドと呼びます。
つまり、プロトタイプベースのオブジェクト指向言語であるJavaScriptでは、Globalオブジェクトとこれに包含される各オブジェクトのオブジェクト自体や、そのオブジェクトのprototypeプロパティが、メソッドであるプロパティを持っています。
JavaScriptには、JavaScriptに予め用意されている組み込み関数と自由に作る事ができるユーザー定義関数があります。
前者を標準組み込み関数と呼ぶ場合もあり、メソッドの場合も同様に標準組み込みメソッド、または、組み込みメソッドと呼ぶ場合があります。
JavaScriptの関数はfunctionを伴って宣言され、引数は、丸カッコ ( ) 内に、複数ある場合、カンマ区切りで記述、処理内容となる式は、波カッコ { } 内に行終端として末尾にセミコロンを伴って記述します。
波カッコ { } 位置は状況や好みにより異なる書き方をすることも可能であるものの以下のように記述するのが一般的です。
function 任意の関数名 ( 引数1 , 引数2 , ... ) { ~; } |
function 任意の関数名 ( 引数1 , 引数2 , ... ) { ~; } |
function 任意の関数名 ( ) { ~; }
この時、引数は必要に応じて利用すればよく、不要ならなくても構いませんが、その場合でも丸カッコ ( ) は省略せずに記述します。
/*
var func1 = function abc( ) { ~; }
var func1 = function ( ) { ~; }
var func1 = new Function ( ) ;
上記は何れも、func1()という関数として使用可
*/
尚、オブジェクト指向であるJavaScriptにおいては、関数もFunctionオブジェクトというオブジェクトであり、オブジェクトは、任意の変数への代入もできますが、変数への代入時には、以後その関数を変数名で利用する為、実のところ元の関数名は不要な場合が多々あり、JavaScriptでは、この関数名を省略、いわゆる無名関数とすることができるようになっています。
function 任意の関数名 ( )
{
~;
return ret_value ;
}
JavaScriptの関数(メソッド)では、最後に評価された値が、その結果として呼び出し元に返されますが、return 文を使って明示的に(式を含む)値を返すことも可能です。
処理命令の区切りは、 ; (半角セミコロン)ですが、 { } の後には不要です。
1つの処理命令が長くなる場合には改行する事もできますが、単語の途中やタグの不自然な位置での改行はできません。
尚、"ダブルクォーテーション"や'シングルクォーテーション'内の改行は避けた方が賢明でしょう。