LESSON 20 ・ 関数
関数を作る
関数を定義する
function square(x) {
return x * x;
}
let a = square(3);
console.log(a);
functionを使って、自分で関数を定義することができます。関数が行う処理は、{ }のブロックに記述します。
受け取った数の2乗を返す関数squareは上記のように書くことができます。受け取る数をxで表し(xでなくても好きな名前を付けられます)、returnで結果を返します。ここではx * xで2乗した数を返しています。
関数を定義するときに、受け取る値に付ける名前をパラメータ(parameter)と言います。この関数ではxがパラメータです。関数を呼び出すときに渡す値を引数(ひきすう, argument)、関数が返す値を戻り値(もどりち, return value)と言います。また、関数に引数を渡して実行することを、関数を呼び出す(よびだす, call)と言います。
累乗を計算する
let a = 2 * 2 * 2 * 2 * 2;
console.log(a);
2の5乗を計算していますが、掛け算を何度も書くのは大変です。
関数の形を考える
let a = power(2, 5);
console.log(a);
これを計算する関数powerを作ってみます。powerには二つのパラメータが必要です。関数には好きな個数のパラメータを定義できます。パラメータが0個の関数を作ることもできます。
power関数を実装する
function power(x, y) {
let result = 1;
for (let i = 0; i < y; i += 1) {
result *= x;
}
return result;
}
let a = power(2, 5);
console.log(a);
関数powerはこのように書くことができます。
使わないループ変数
function power(x, y) {
let result = 1;
for (let i = 0; i < y; i += 1) {
result *= x;
}
return result;
}
let a = power(2, 5);
console.log(a);
組み込みの関数を使う
let a = Math.pow(2, 5);
console.log(a);
実は、JavaScriptには元々Math.pow()という関数が用意されているので、自分で作る必要はありません。
let a = Math.pow(2, 2.5);
console.log(a);
このMath.powはさっき自分で書いたpowerよりも汎用的な実装がされており、2.5乗のような小数乗を計算することもできます。
PRACTICE
演習問題
コードを自分で書いて実行してから、答えと解説を確認しましょう。
問題1
整数を一つ受け取り、その数を2乗して返す関数squareを定義してください。square(4)の結果を表示してください。
答えと解説を見る
模範解答
function square(x) {
return x * x;
}
console.log(square(4));
パラメータxをx * xで2乗し、returnで結果を返します。square(4)の戻り値は16です。
問題2
長方形の幅と高さを整数で受け取り、面積を返す関数rectangleAreaを定義してください。幅8、高さ5の面積を表示してください。
答えと解説を見る
模範解答
function rectangleArea(width, height) {
return width * height;
}
console.log(rectangleArea(8, 5));
幅と高さをパラメータとして受け取り、その積を戻り値にします。同じ関数へ別の幅と高さを渡せば、ほかの長方形にも使えます。
問題3
整数xのy乗を返す関数powerを定義してください。power(3, 4)の結果を表示してください。
答えと解説を見る
模範解答
function power(x, y) {
let result = 1;
for (let i = 0; i < y; i += 1) {
result *= x;
}
return result;
}
console.log(power(3, 4));
resultを1から始め、xをy回掛けます。3を4回掛けた結果の81が返されます。
問題4
言語に用意されている累乗の関数を使って、5の3乗を表示してください。
答えと解説を見る
模範解答
console.log(Math.pow(5, 3));
Math.powに底と指数を渡します。結果は125です。
問題5
1から受け取った整数nまでをすべて掛けた値を返す関数factorialを定義してください。factorial(5)の結果を表示してください。
答えと解説を見る
模範解答
function factorial(n) {
let result = 1;
for (let number = 1; number < n + 1; number += 1) {
result *= number;
}
return result;
}
console.log(factorial(5));
累乗する関数と同じように、ループでresultへ値を掛けていきます。1 * 2 * 3 * 4 * 5の結果である120が返されます。