edubun
日本語

関数

function square(n) { return n * n; } と一度書けば、square(4) は 16、square(9) は 81 というように、渡したどんな数にも答えを返します。

ひとまとまりの仕事に名前をつける

あなたはもう、ほかの人が書いた関数を使っています。console.log も Math.round も toUpperCase も、みな関数です。関数は、一つの仕事をする名前つきのコードのブロックです。一度定義すれば、あとは名前で何度でも呼び出せます。関数を使えば同じ行をあちこちにコピーせずにすみますし、プログラムを大きなまとまりで考えられるようになります。長い計算の並びではなく、「チップを計算して、それから代金を割りかんする」というようにです。

function greet(name) {
  return "Hello, " + name + "!";
}

console.log(greet("Ana"));   // Hello, Ana!
console.log(greet("Ji"));    // Hello, Ji!

定義はキーワード function で始まり、次に関数の名前、そしてかっこの中に引数のリストが続きます。仮引数は、関数が呼び出されたときに値を受け取る変数で、ここでは name です。波かっこの中の本体が仕事をします。greet("Ana") と呼び出すと、実引数と呼ばれる値 "Ana" が仮引数 name に入り、本体が実行されます。

return は値を返す

キーワード return は関数を終わらせ、関数を呼び出した場所に値を送り返します。呼び出し greet("Ana") は式で、その値は返された値です。だから console.log の中にも、計算の中にも置けますし、変数に入れることもできます。const msg = greet("Ana"); のようにです。

値を返すことと表示することは別のことで、初心者はよく混同します。console.log を呼ぶだけの関数は画面に何かを表示しますが、何も返しません。その呼び出しは undefined と評価されるので、結果を計算に使うことはできません。原則として、関数には結果を返させ、表示するかどうかは呼び出す側のコードに決めさせましょう。

function addPrint(a, b) {
  console.log(a + b);
}
function add(a, b) {
  return a + b;
}

const x = add(2, 3) * 10;
console.log(x);      // 50
addPrint(2, 3);      // 5 と表示するが、使える値は返さない

return は関数をすぐに止めることもします。同じ道筋で return よりあとにある行は実行されません。これを使うと、特別な場合を先に処理できます。関数の先頭に if (n < 0) return "negative"; と書き、ふつうの場合はその下に書きます。

複数の引数と既定値

関数はコンマで区切った複数の仮引数をとることができ、実引数は順番どおりに対応します。add(2, 3) では a が 2、b が 3 です。呼び出しで実引数を省くと、その仮引数は undefined になります。何も渡されなかったときに使う既定値を仮引数につけることもできます。function tip(bill, rate = 0.15) は、呼び出す側が別の rate を渡さないかぎり 0.15 を使います。

アロー関数

今の JavaScript には、小さな関数を短く書く方法もあります。アロー関数です。const square = (n) => n * n; は、冒頭の square 関数と同じ意味です。本体が一つの式だけなら、波かっこも return キーワードもなしで、その値が自動的に返されます。今のコードではアロー関数をあらゆるところで見かけます。

中の変数は中にとどまる

関数の中で宣言した仮引数や変数は、その関数の中にしか存在しません。これをスコープと呼びます。二つの別々の関数がそれぞれ total という変数を持っても、たがいにじゃまし合いません。関数の外のコードは、その関数の中だけの変数を見ることができません。関数は外で宣言された変数を読むことはできますが、いちばんすっきりした関数は、必要なものをすべて引数で受け取り、すべてを return で返します。そうすれば、その関数だけを見て理解できます。

function 名前(引数) { return 結果; } const 名前 = (引数) => 結果;

関数一つの仕事をする名前つきのコードのブロック
呼び出し関数を実行すること:名前(実引数)
仮引数定義の中にあって値を受け取る変数
実引数呼び出しで渡す値
return関数を終わらせて値を返す
既定の引数rate = 0.15:実引数が渡されないときに使われる
アロー関数(n) => n * n
スコープ変数が見える範囲。関数の中の変数は中にとどまる
  1. 何が表示されますか?
    function double(n) {
      return n * 2;
    }
    console.log(double(7));
  2. 何が表示されますか?
    function add(a, b) {
      return a + b;
    }
    console.log(add(2, 3) * add(1, 1));
  3. 何が表示されますか?
    function minus(a, b) {
      return a - b;
    }
    console.log(minus(3, 10));
  4. 何が表示されますか?
    function f(x) {
      return x + 1;
      console.log("hi");
    }
    console.log(f(1));
    • 2
    • hi, then 2
    • 2, then hi
  5. 何が表示されますか?
    function show(n) {
      console.log(n);
    }
    const r = show(5);
    console.log(typeof r);
    • 5, then number
    • 5, then undefined
    • Only undefined
  6. 何が表示されますか?
    const triple = (n) => n * 3;
    console.log(triple(4));
  7. 何が表示されますか?
    function tip(bill, rate = 0.1) {
      return bill * rate;
    }
    console.log(tip(50));
  8. 何が表示されますか?
    function tip(bill, rate = 0.1) {
      return bill * rate;
    }
    console.log(tip(50, 0.2));
  9. 何が表示されますか?
    function sign(n) {
      if (n < 0) return "neg";
      if (n === 0) return "zero";
      return "pos";
    }
    console.log(sign(0));
  10. function area(w, h) を area(3, 5) と呼び出したとき、w と h は何と呼ばれ、3 と 5 は何と呼ばれますか?
    • w と h は仮引数で、3 と 5 は実引数
    • w と h は実引数で、3 と 5 は仮引数
    • 四つとも戻り値
ポイント
  • function 名前(仮引数) { ... } で定義し、名前(実引数) で呼び出す。
  • 実引数は順番どおりに仮引数に対応する。
  • return は関数を終わらせて値を返す。表示することは返すことではない。
  • 既定の引数は、渡されなかった実引数をおぎなう。
  • アロー関数:(n) => n * n。
  • 関数の中の変数は中にとどまる(スコープ)。
このコースの出典 (2)
  • MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
  • Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)

確認日: 2026-10-17