10. 関数
関数は処理を一纏めにしたものです。
関数の定義方法と呼び出し方は以下です。
// 関数の定義 function 関数名(引数) { 処理 return 戻り値; } // 関数の呼び出し 関数名(引数); // 戻り値を受け取りたい場合は 戻り値を保存させたい変数 = 関数名(引数);
関数名
定義で付けた名前を呼び出しの時に使用します。
引数
関数に渡す値です。
カンマで区切る事で、複数の引数を指定できます。引数が必要ない場合は省略できます。
カンマで区切る事で、複数の引数を指定できます。引数が必要ない場合は省略できます。
処理
関数が呼び出された時、ここに記述された処理が実行されます。
戻り値
return 戻り値; と記述すると、そこで関数の処理を終了し、戻り値に指定された値を返します。
戻り値は「OK」や「100」などの固定の値や変数、計算式や関数も指定する事もできます。
計算式を指定した場合は計算結果が返され、関数を指定した場合はその関数の戻り値が返されます。
戻り値は「OK」や「100」などの固定の値や変数、計算式や関数も指定する事もできます。
計算式を指定した場合は計算結果が返され、関数を指定した場合はその関数の戻り値が返されます。
では以下のサンプルを「SampleJS.html」に記述して実行してみましょう。
/* * ベースとなる料理と加える食材を引数で与えると、完成した料理を文字列で返します。 * * 引数1:mainDish ... ベースとなる料理名 * 引数2,3:food1, food2 ... 加える食材名 * 戻り値:完成した料理の文字列 */ function cooking(mainDish, food1, food2) { var mainMenu = workmanship(mainDish); var arrangeMenu = arrange(food1, food2); return mainMenu.tasteLevel + arrangeMenu + mainMenu.name; } /* * ベースとなる料理と加える食材を引数で与えると、完成した料理を文字列で返します。 * * 引数1:mainDish ... ベースとなる料理名 * 戻り値:料理名と出来栄えの文字列をプロパティに持つオブジェクト */ function workmanship(mainDish) { var workmanshipData = { name : mainDish, tasteLevel : Math.floor(Math.random() * 100 + 1) // 料理の点数を1~100点でランダム生成 }; // 料理の点数に応じた文字列で上書きする if (workmanshipData.tasteLevel > 95) { workmanshipData.tasteLevel = "至高の"; } else if (workmanshipData.tasteLevel > 80) { workmanshipData.tasteLevel = "ほっぺたの落ちる"; } else if (workmanshipData.tasteLevel > 60) { workmanshipData.tasteLevel = "おいしい"; } else if (workmanshipData.tasteLevel > 30) { workmanshipData.tasteLevel = "普通の"; } else if (workmanshipData.tasteLevel > 15) { workmanshipData.tasteLevel = "微妙な"; } else if (workmanshipData.tasteLevel > 5) { workmanshipData.tasteLevel = "異臭のする"; } else { workmanshipData.tasteLevel = "炭化した"; } // 料理の名前と評価を持ったオブジェクトを返す return workmanshipData; } /* * 加える食材の種類と個数に応じてアレンジの文字列を返します。 * * 引数1,2:food1, food2 ... 加える食材名 * 戻り値:アレンジの文字列 */ function arrange(food1, food2) { // 使える食材をジャンル毎に配列に代入する var vegetables = [ "にんじん", "じゃがいも", "たまねぎ" ]; var meats = [ "牛肉", "豚肉", "鶏肉" ]; // 使える食材のジャンル別の個数を数える変数 var vegetablesCount = 0; var meatsCount = 0; // for文用 var i; // 野菜の数チェック for (i = 0; i < vegetables.length; i++) { if (vegetables[i] == food1) { vegetablesCount++; } if (vegetables[i] == food2) { vegetablesCount++; } } // お肉の数チェック for (i = 0; i < meats.length; i++) { if (meats[i] == food1) { meatsCount++; } if (meats[i] == food2) { meatsCount++; } } // 食材の配分で料理名を決める if (vegetablesCount == 2) { return "野菜たっぷり"; } else if (meatsCount == 2) { return "お肉たっぷり"; } else if (vegetablesCount == 1 && meatsCount == 1) { return "野菜とお肉の"; } else if (vegetablesCount == 1) { return "野菜"; } else if (meatsCount == 1) { return "お肉"; } else { return "得体の知れない"; } alert("return されているので、ここは実行されません。"); } // cooking関数を呼び出す var itadakimasu = cooking("カレーライス", "たまねぎ", "牛肉"); alert(itadakimasu);
他の食材を扱えるように引数を増やしてみたり、新しく値段を決める関数を作るなど、書き換えながら動作を確認してみましょう。
This software includes the work that is distributed in the Apache License 2.0
最終更新日時: 2018年 05月 8日(火曜日) 09:50