カテゴリー
JavaScript

関数について知ろう1

この章ではユーザー定義関数について説明します。
関数とは「引数と言うデータ」を受け取って、ある一定の処理を行い、戻り値という結果を呼び出し元に返す命令のことを言います。
引数とは関数を実行するときに使われるデータです。戻り値とは関数を実行した結果、返される値です。
エクセルをご存知の方はわかると思いますが、例えばエクセル関数にSUMと言う関数がありますが、この関数は指定した範囲のデータに基づいて足し算を行う関数です。
例えば指定した範囲のデータが3,5,7(引数)であるならば結果は15です。
SUMには初めから指定した範囲の足し算を行うと言う仕組みが備わっています。エクセルの内部機構でSUMの機能は指定した範囲の足し算を行うというプログラムがされているということです。
この章で説明する関数はユーザー定義関数という名前が付いていますが、要はこのSUMのような機能を持つ関数を自分で作る方法について説明をしていきます。
例えば「消費税を自動で計算する関数」を自分で作りたいとします。
その場合、お金を関数に渡すと関数は商品金額に消費税率を掛けた処理をして、その結果を返すという関数を作ることになります。
関数に「ある一定の処理」を書くことを「関数の定義」といいます。
書き方は3つあります。1 関数名の付け方は基本的には変数の命名規則と同じです。
引数が複数ある場合はカンマで区切ります。
必要が無いならば引数は省略出来ます。1 カッコの中の引数はダブルクォートで囲って何個でも書くことが出来ますが、引数の末尾には「関数の処理文」を書きます。
処理文もセミコロンで区切れば何個でも書くことが出来ます。
「関数の定義の基本構文2」の説明は「関数について知ろう2」で説明します。1 関数はデータ型であり、配列リテラルと同じように関数も関数リテラルで記述することが出来ます。
「関数の定義の基本構文3」の説明は「関数について知ろう3」で説明します。
実は関数はただ書いただけでは動きません。
関数を実行するためには関数を呼び出さなくてはいけませんが、その構文は以下の通りです。1 必要が無いならば引数は省略出来ますが、引数を省略する場合もカッコを付けてください。
引数が複数ある場合はカンマで区切ります。
この章では「関数の定義の基本構文1」を説明します。
では例をみてみましょう。
この関数の書き方が一番分かりやすくて、よく使われます。11 この関数は三教科の平均を求める関数です。
heikinは関数名で、変数の命名規則と同じ範囲で自由に付けることが出来ます。
この関数を呼び出すには関数名と同じ名前を付けて呼び出します。
例で言えば以下の箇所です。1 関数を呼び出すことによってheikin関数の中身が実行されます。
関数の呼び出しの1のkokugo,sansuu,eigoの部分を実引数といい、1のe,f,gの部分を仮引数といいます。
なお、関数を呼び出しする位置は関数の定義の前でも後でも問題ありません。1 つまり例のように1を関数の定義の後に書いても問題ありません。

ではこの関数について詳しく見てみましょう。
①heikin(kokugo,sansuu,eigo);で関数を呼び出します。
引数である変数にはそれぞれ50、40、90が代入されています。
②1で関数を呼び出した後はkokugoの値が関数の引数eに、sansuuの値がfに、eigoの値がgに代入されます。
補足すべきことが2つあります。
1つ目は実引数と仮引数の変数名が同じでなくても問題ありません。
つまりkokugoとe, sansuuとf, eigoとgが同じ変数名である必要はありません。
2つ目は仮引数にvarは付ける必要はありません。
③2で仮引数e,f,gの部分にそれぞれ実引数の値が代入されましたが、仮引数eはfunction内部のeの部分に、仮引数fはfunction内部のfの部分に、仮引数gはfunction内部のgの部分に代入され計算が実行されます。1 ④function内部の処理が終わった後は呼び出し部分の1に戻ります。
結果は以下の通りです。
「三科目の平均は60です」

では次の例を見てみましょう。11 先ほどの例とほとんど同じですが、このheikin関数は計算結果を呼び出し元に戻しています。
結果を戻すには関数内に1という形式で記述してください。
returnは値を1つだけ返すことが出来ます。
そして、返された結果は例の1に代入します(変数名はbでなくても自由です)。
最後に1で出力して、結果を表示します。1
次は仮引数と実引数の数が違う場合はどうなるのかを説明します。11 heikin(kokugo,sansuu);のように実引数が2つで、1 のように仮引数が3つの場合、つまり実引数が仮引数より少ない場合は仮引数の余った変数(この例ではg)にはundefined(未定義値)が入ります。
結果は「NaN」ですが、これは数値型の値であり、この例のようにundefinedと足し算するなどの通常とは違った演算が実行された時に返される値です(数値に変換しようとしてできなかった場合)。
答えは以下の通りです。
「三科目の平均はNaNです」