関数の定義(3) | 引数とreturnを詳しく

引数:関数へ値を渡す

function 関数名(仮引数1、仮引数2、...){
  実行される処理1;
  実行される処理2;
}
  関数名(実引数1、実引数2、...); //関数を呼出す時
  • 関数を呼出す時に関数名後の( )に実引数を記述する
    →仮引数に実引数が代入される
    →関数へ値を渡している
  • 引数は「値」「値が格納された変数」「式」を記述することができる
  • 引数を複数記述する時はカンマで区切る

3つの引数が渡される関数をsumとすると次のように定義できる。 関数は呼び出された時に値を渡される(実引数)と定義側関数( )内に順に引数が代入される。 だから定義側の関数では変数(値を入れる器)を記述する。

function sum(num1, num2, num3){
  実行される処理;
}

sum(1,2,3);//最初の呼出し
sum(a,b,c);//次の呼出し

最初の呼出しではnum1=1,num2=2,num3=3が 次の呼出しではnum1=a,num2=b,num3=c が代入される。

定義関数側の仮引数と呼出関数側の実引数の数が異なるとき

  • 仮引数が基準
  • 仮引数が多い場合は「undefined」
  • 少ない場合は無視される
<script>
function ex(str1, str2){
  document.write("<p>");
  document.write(str1 + "," + str2);
  document.write("</p>");
}

ex('引数1','引数2');         //仮引数の数と一致
ex('引数1','引数2','引数3'); //実引数3は捨てられる
ex('引数1');                 //str2が未定義になる
</script>

仮引数の数と実引数の数の不一致

 

return文:戻り値で関数から値を返す

function 関数名(引数1, 引数2, ...){
  実行される処理1;
  実行される処理2;

  return 式;
}

変数名 = 関数名(引数1, 引数2, ...);
  • 関数の呼出しで処理が定義側関数ブロック内に移る
  • 式の結果を呼出し元へリターンする
  • 関数からの戻り値を変数に代入する
  • return文を使えば値を1つだけ戻せることで複雑な計算の結果を返す関数を作成できる
<script>
function area(r){
  return 3.14 * r * r;
}

var r = prompt('半径を入力して下さい','半角数字');

document.write('<p>');
document.write('半径 = ' + r + '<br />');
document.write('面積 = ' + area(r));
document.write('</p>');
</script>

return文 円の面積計算

return文がない場合の戻り値

関数のブロック内にreturn文が無い場合や、if文の中などに書かれていてreturn文が実行されないまま関数のブロック内の最後の処理まで行われた時には未定義値(undefined)が返される。

式が記述されていないreturn文

return文は戻り値を関数呼び出し元へ返すためだけでなく、関数内の処理を終了し呼出し元へ処理の流れを返す為にも使用される。