関数の定義
javascriptの関数の定義についてまとめます。
関数の定義については、関数定義式、関数宣言文として、「function」キーワードを使って定義します。
関数の定義の特徴は次のようになります。
・関数宣言文では、関数の名前を指定します。この名前は関数名として利用します。
・関数名は変数名として利用することもできます。
・関数の定義する際に、関数名を省略することが可能です。
・関数名を省略した関数は無名関数や、匿名関数とも呼ばれます。
・関数の引数は()の内部に記述します。
・引数は、カンマ区切りで0個以上の識別子を記述します。
・識別子は引数名として利用可能で、関数本体内でローカル変数のように利用できます。
・{}ブロックでかこまれた文は、関数の本体部分になります。
関数の定義の方法はjavascript独特の定義があるので、実際にコードを書いて試していきます。
代表的な関数の定義の仕方を下記のコードにまとめます。
//関数の定義(戻り値はなし) function test1 () { //処理 } //関数の定義、引数「value_y」を持つ(戻り値はなし) function test2 (value_y) { //処理 } //関数の定義(戻り値は有り) function test3 () { //処理 //決まった文字列を返す return "test3"; } //関数の定義、再帰関数(関数内の条件判定が真の場合、戻り値が返される) function test4 (value_x) { //処理 if (value_x < 100) { return true; } //決まった文字列を返す return test4(value_x + 10); } //関数式を変数に代入する場合(無名関数) let test5 = function(x) { return x * x; } //関数式に名前をつけて、定義する let test6 = function test7(x) { return x * x; } //関数式を他の関数の引数として使用する //(この場合、test8オブジェクトのtest9メソッドの引数として、無名関数を割り当てています) test8.test9(function(a, b) { return a - b; } )); //関数定義と同時に処理を呼び出す場合 let test10 = (function(x) { return x + x; }(100));
上記の例にあるように、式として関数を定義することができます。
その場合、関数名を省略して無名関数という呼び方をします。
また、変数に対して関数を代入する場合は、変数に関数オブジェクトを代入するという考え方ができます。
無名関数はプログラム中で1回だけ実行される関数を定義する場合に有効で、実装方法に応じて通常の関数定義と使い分けます。
関数の名前について
関数名は識別子として有効な名前であれば、文字列に制約はありません。
命名規則はプロジェクトの規約やルールにより変動するものですが、
一般的な命名ルールは「リーダブルコード」等の書籍等を参照にすると良いと思います。
関数の呼び出しについて
関数の呼び出し方法を理解するには、javascript特有の動作があることを把握する必要があります。
関数宣言文はスクリプトや関数の先頭に巻き上げられて処理されます。
関数宣言文(function)で宣言された関数は、関数定義した箇所よりも前に定義することができます。
(他のプログラム言語では、関数の宣言位置によってエラーが起こります)
また、式に代入された関数は、変数に代入された後から利用可能になります。
関数からの返し方について
関数内で処理を行い、その処理結果を関数の呼び出し元に返すには、return文を使います。
return文が定義された行から関数が返されます。
また、return文を省略した場合の関数は、呼び出し元にundefinedが返されます。