1. 山田 太郎さんの挨拶
  2. 別の人でも使い回せる
  3. 肩書きが空文字列のとき
  4. 両方とも空文字列のとき
コース一覧
JavaScript基礎文法:処理を組み立てる
関数宣言

JavaScript基礎文法:処理を組み立てる

if・switch による条件分岐、配列とループ、関数とコールバック、オブジェクトを順に組み立てる全 33 レッスン(525 分)の基礎文法コースです。FizzBuzz、作品リスト、関数への整理、作品データの構造化を通して、入力から結果を返す処理を自分で分解して書きます。DOM 操作は次のコースで扱います。

1
条件分岐
01. if 文の基本15分
02. if / else if / else で段階判定15分
03. switch 文で値を一覧から選ぶ15分
04. 条件を組み合わせる20分
05. FizzBuzz で複数条件を組み立てる20分
06. つくる 時間帯で挨拶を変える20分
07. 第1章まとめクイズ10分
2
配列とループ
01. 配列のきほん15分
02. 要素を足す・取り除く15分
03. for ループで合計を求める15分
04. for-of で配列を走査する15分
05. while で条件を満たす間くり返す15分
06. break と continue でループを制御する15分
07. つくる 作品リストを一覧にする20分
08. 第2章まとめクイズ10分
3
関数
01. 関数宣言15分
02. アロー関数15分
03. デフォルト引数15分
04. 早期 return でネストを浅くする15分
05. 変数のスコープ15分
06. コールバック関数15分
07. forEach で配列をまわす15分
08. つくる 処理を関数に整理する20分
09. 第3章まとめクイズ10分
4
オブジェクト
01. オブジェクトのきほん18分
02. オブジェクトで複数の値を返す16分
03. const と参照18分
04. ?. で安全に取り出す16分
05. 分割代入18分
06. スプレッド構文18分
07. find と includes で探す16分
08. つくる 作品データを構造化する25分
09. 第4章まとめクイズ10分

関数宣言

関数の入口と出口
解説

このレッスンで分かること

  • function 名前(引数) { return 値; } で処理に名前を付けて、何度でも呼べます
  • 引数が関数への入口、return が出口です

同じ組み立てを 3 か所に書いてしまう

プロフィールサイトで、作品名と公開年を並べた 1 行を出したいとします。トップにも出す、一覧にも出す、詳細にも出す。同じ組み立てを 3 か所に書いていたら、カッコの形を変えたくなったときに 3 か所を直すことになります。1 か所直し忘れれば、そこだけ表示が食い違うバグです。

そこで使うのが関数です。ひとかたまりの処理に名前を付けて、何度でも呼び出せるようにした道具です。料理でいえばレシピにあたります。名前が付いていれば一言頼むだけで済みますし、レシピを直せば、次から作るぶんは全部いっぺんに変わります。

入口が引数、出口が return

function キーワードを使った書き方を関数宣言と呼びます。

JavaScript

function makeWorkLabel(title, year) { return title + "(" + year + " 年公開)"; } console.log(makeWorkLabel("プロフィールサイト", 2026)); // => プロフィールサイト(2026 年公開) console.log(makeWorkLabel("自己紹介カード", 2025)); // => 自己紹介カード(2025 年公開)
パーツ役割
function関数を作りますという合図
makeWorkLabel呼び出すときに使う名前
( ) の中引数。関数への入口。カンマ区切りでいくつでも並べられる
{ } の中関数の本体
return戻り値。呼び出した側に値を渡す

引数の並び順は、呼び出す側と一致していなければいけません。逆に渡してもエラーにはならず、間違った文字列が静かに出来上がります。関数名は動詞から始めると意図が伝わります。get は取り出す、make は組み立てる、is は真偽値を返す、といった型があります。

表示しただけでは、返したことにならない

return を書き忘れた関数は undefined を返します。エラーが出ないぶん、いちばん気付きにくい間違いです。

JavaScript

function brokenLabel(title, year) { console.log(title + "(" + year + " 年公開)"); } console.log(brokenLabel("プロフィールサイト", 2026)); // => プロフィールサイト(2026 年公開) // => undefined

文字列は組み立てていますが、誰にも渡していません。作った料理を皿に盛らずに捨てているようなものです。console.log は人間に見せる表示、return は呼び出し元に値を渡すこと。この 2 つはまったく別の行為で、テストが見ているのは return の値だけです。

return にはもう 1 つ働きがあります。そこで関数を終わらせることです。

JavaScript

function firstOnly(a, b) { return a; return b; // ここへは決して来ない }

return に到達した瞬間に関数は終了し、後ろに書いた行は実行されません。この性質は、あとのレッスンで大きな武器になります。

よくある間違い

  • 呼び出すときに丸カッコを忘れる — makeWorkLabel は関数そのもの、makeWorkLabel("自己紹介カード", 2025) が呼び出した結果です。カッコが無いと中身は動きません
  • return の直後で改行する — JavaScript は行末にセミコロンを補うことがあり、return だけで文が終わったと読まれて undefined が返ります。返したい値は return と同じ行に書き始めます

要件

  1. function キーワードで関数 makeGreeting を宣言すること
  2. 引数を 2 つ (name, role の順) 受け取ること
  3. 文字列 こんにちは、 + name + さんです。 + role を return すること
  4. 引数が空文字列でも、そのまま連結した文字列を返すこと

入出力例

makeGreeting("山田 太郎", "Web エンジニアを目指しています") → "こんにちは、山田 太郎さんです。Web エンジニアを目指しています" makeGreeting("鈴木 花子", "デザイナー") → "こんにちは、鈴木 花子さんです。デザイナー" makeGreeting("山田 太郎", "") → "こんにちは、山田 太郎さんです。" makeGreeting("", "") → "こんにちは、さんです。"

ヒント

関数は入力 (引数) と出力 (戻り値) を決めてから中身を書くと迷いません

function makeGreeting(name, role) { ... } の形で宣言し、中で return します

`さんです。` は句点まで含めて 1 つの文字列です。連結の順番と記号を 1 文字ずつ確かめてください

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/19·更新 2026/08/26

関連レッスン

  • アロー関数

    矢印記号を使って関数を短く書く記法を学びます。前のレッスンで書いた挨拶の関数を、アロー関数に書き直します。

  • デフォルト引数

    引数が渡されなかったときに使う既定値をあらかじめ決めておく書き方を学びます。肩書きが未入力でもプロフィールが崩れないようにします。

  • 早期 return でネストを浅くする

    関数の冒頭で不正な入力をはじいてしまい、本体を浅いインデントで書く書き方を学びます。ガード節、または早期 return と呼ばれます。

  • 変数のスコープ

    宣言した変数がどこから見えるかという範囲について学びます。関数の外を汚してしまうバグを、ローカル変数に直して防ぎます。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • 処理計算や代入を表す長方形
  • 引数位置引数=順番で渡す。
  • 関数処理に名前を付けて再利用できる単位
  • 戻り値呼び出し元への返答を表す点線矢印
  • テストバグを見つける工程
main.js
学習モード
エディタを読み込んでいます

メモ

関数宣言

⌘S で保存