20 / 2774%

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));

パラメータxx * xで2乗し、returnで結果を返します。square(4)の戻り値は16です。

問題2

長方形の幅と高さを整数で受け取り、面積を返す関数rectangleAreaを定義してください。幅8、高さ5の面積を表示してください。

答えと解説を見る

模範解答

function rectangleArea(width, height) {
  return width * height;
}

console.log(rectangleArea(8, 5));

幅と高さをパラメータとして受け取り、その積を戻り値にします。同じ関数へ別の幅と高さを渡せば、ほかの長方形にも使えます。

問題3

整数xy乗を返す関数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));

result1から始め、xy回掛けます。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が返されます。