引数と戻り値

関数の引数と戻り値

関数を呼び出して処理を実行する際に値を受け渡すことができます。この呼び出した関数に渡す値を 引数 といいます。
また、呼び出し関数から処理を戻す際にも値を受け渡すことができます。この呼び出した関数から受け取る値を 戻り値 といいます。
引数と戻り値を含めた関数の宣言は次のように記述することができます。

function 関数名(仮引数1, 仮引数2, ...) {
  // 処理
  return 戻り値;
}

関数が呼び出されたときに受け取る値を格納する変数を 仮引数 といいます。仮引数は関数名の後ろの丸括弧内に指定します。
仮引数の宣言にはvarは不要で、複数ある場合はカンマ区切りで記述します。
また、return文 によって戻り値を指定します。戻り値が不要の場合はreturn文を省略します。
return文が実行されると、それ以降の処理は実行されないため気をつけましょう。

return文が実行されると、戻り値と共に処理も戻ります。

一方で、引数を渡して関数を呼び出すには下記のように記述します。

関数名(引数1, 引数2, ...)

戻り値を返す関数を呼び出した場合は、左辺に変数を指定することで代入をしたり、さらに引数として利用をしたりすることができます。
では、次のサンプルで確認をしてみましょう。
面積を求めるcalcArea関数は、引数として縦の長さx変数と横の長さy変数の値を受け取り、戻り値としてx * yの算出結果を返します。

function myFunc_3() {
  var result = calcArea(10, 5); // 関数の結果を変数に格納することができます
  console.log(result);
  console.log(calcArea(2, 15)); // 関数の結果を別の関数の引数に指定することもできます
}
function calcArea(x, y) {
  return x * y;
}
50
30

関数と return

関数の値はキーワードの return を使って呼び出し側に戻します。
関数から return で戻らない場合や値が指定されていない return で戻る場合、
関数が返す値は undefined となります。

function myFunc_4() {
  console.log(output_1());
  console.log(output_2());
}
function output_1() {
  return 'Hello!';
}
function output_2() {
  var hello = 'Hello!';
}

Hello!
undefined

関数の引数

関数に情報を渡すには「引数(パラメーター)」と呼ばれるものを利用します。
引数は「関数が呼び出されるまでは存在しない変数」であり、
関数の呼び出しの際に()の中に値を設定することでその値を引数として利用することができます。

function sum(a, b) {
  return a + b;
}

上記のサンプルにおいて、aとbは「仮引数」と呼ばれており、
関数が呼び出されると仮引数に呼び出し側から渡された値が代入されたのち関数本体が実行されます。

console.log(sum(5, 10);

上記の例では仮引数のaには5、bには10が値として記憶されてから、関数本体が実行されます。
仮引数は普通の変数と同じような役割をしますが、この関数の本体でしか値の参照や代入はできません。
関数の外に同じ名前の変数があったとしても別の変数として扱われます。

関数の引数の注意点

多くの言語では引数の個数が違う場合は異なる関数として扱われます。
例えば、Javaではf(x)とf(x, y)とでは引数の数が異なるため別の関数として扱われます。
JavaScriptではこのような区別がなく、引数なしであっても、引数がいくつあっても同じ関数として呼び出されます。
そのため、どのような関数でも任意個数の引数を指定して呼び出すことができます。
呼び出し側に引数を指定しない場合は暗黙のうちにundefinedが指定されて呼び出されます。

function myFunc_5() {
  console.log(output_3());
}
function output_3(x) {
  return 'output_3内のxの値:' + x;
}

output_3内のxの値:undefined