関数ってそもそも何者?
関数は、
「処理に名前をつけて、あとから何度でも呼び出せるようにしたもの」 です。
同じような処理を何回も書くのはダルいし、ミスの元です。
そこで「この処理に名前をつけておいて、必要なときにその名前を呼ぶだけ」にする。
これが関数の役割です。
「レシピに名前をつける」と思ってください。
レシピ(関数)を一度書いておけば、「カレー作って」と言うだけで毎回同じ手順で作れる、そんなイメージです。
一番基本的な関数定義の形
function 文での定義
まずは、いちばん基本の形から。
function greet() {
console.log("こんにちは!");
}
JavaScriptこれで greet という名前の関数が定義されました。
でも、この時点では「レシピを書いただけ」で、まだ実行はされていません。
実行するには「呼び出し」が必要です。
greet(); // ここで初めて「こんにちは!」が表示される
JavaScriptここが重要です。
「関数定義」と「関数呼び出し」は別物 です。function greet() { ... } は「こういう処理だよ」という宣言。greet() は「今それを実行して」という命令です。
引数付きの関数定義
「入力を受け取る」関数
関数には「引数(ひきすう)」という“入力”を渡せます。
function greet(name) {
console.log("こんにちは、" + name + "さん");
}
greet("太郎"); // こんにちは、太郎さん
greet("花子"); // こんにちは、花子さん
JavaScriptname が引数です。greet("太郎") と呼び出したとき、name の中身は "太郎" になります。
ここで大事なのは、
関数は「変わる部分」を引数にして、処理の中で使う という考え方です。
「誰に挨拶するか」は毎回違うので引数にする。
「挨拶の仕方」は同じなので関数の中に書いておく。
こうやって「変わるところ」と「変わらないところ」を分けるのが、関数設計の基本です。
戻り値付きの関数定義
「結果を返す」関数
関数は、処理をして「結果」を返すこともできます。
そのときに使うのが return です。
function add(a, b) {
return a + b;
}
const result = add(3, 5);
console.log(result); // 8
JavaScriptadd(3, 5) を呼び出すと、
関数の中で a + b が計算され、その結果が return で呼び出し元に返されます。
ここが重要です。return は「この関数の“答え”はこれです」と外に渡すためのキーワード です。
もう少しだけ踏み込むと、return が実行された時点で、その関数の処理はそこで終了します。
function check(num) {
if (num > 10) {
return "大きい";
}
console.log("ここは num <= 10 のときだけ実行される");
return "小さい";
}
JavaScriptnum > 10 のときは、最初の return で関数が終わるので、console.log の行は実行されません。
関数定義のいろいろな書き方
関数宣言(function 文)
さっきのような書き方です。
function greet(name) {
console.log("こんにちは、" + name + "さん");
}
JavaScriptこれは「関数宣言」と呼ばれます。
ファイルのどこに書いても、同じスコープ内なら前からでも後ろからでも呼び出せます(ホイスティングされるため)。
関数式(関数を変数に代入する)
関数は「値」として扱えるので、変数に代入することもできます。
const greet = function (name) {
console.log("こんにちは、" + name + "さん");
};
greet("太郎");
JavaScriptfunction (name) { ... } という“無名の関数”を、greet という変数に入れています。
この書き方は、あとで関数を差し替えたり、他の関数に渡したりするときに便利です。
アロー関数(=>)
最近の JavaScript では、アロー関数もよく使います。
const greet = (name) => {
console.log("こんにちは、" + name + "さん");
};
JavaScriptさらに、戻り値だけのシンプルな関数なら、こう短く書けます。
const add = (a, b) => a + b;
console.log(add(2, 3)); // 5
JavaScriptここが重要です。
「function 文」「関数式」「アロー関数」は“書き方が違うだけで、どれも関数を定義している」 ということ。
最初は function で慣れてから、徐々にアロー関数に触れていけば十分です。
実務でよくある「関数定義」の使い方イメージ
「1つの責務」に名前をつける
例えば、ユーザー一覧を表示する処理を考えます。
async function loadUsers() {
const res = await fetch("/api/users");
const users = await res.json();
renderUsers(users);
}
JavaScriptここでは、
データを取得する
JSON に変換する
画面に描画する
という一連の流れに loadUsers という名前をつけています。
さらに分けるなら、
async function fetchUsers() {
const res = await fetch("/api/users");
return res.json();
}
function renderUsers(users) {
// DOM 操作など
}
async function loadUsers() {
const users = await fetchUsers();
renderUsers(users);
}
JavaScriptこんなふうに、
「データ取得」と「表示」を別々の関数に分けることもできます。
ここが重要です。
関数定義の本質は「処理をまとめて名前をつける」こと。
“何をしているか”が名前から分かるように切り出すと、コードが一気に読みやすくなる。
初心者がつまずきやすいポイントを先に押さえておく
「定義しただけでは動かない」
よくあるのが、こういうパターンです。
function greet() {
console.log("こんにちは");
}
JavaScriptこれを書いて満足して、「あれ、何も表示されない…」となる。
それは「呼び出していないから」です。
greet(); // これが必要
JavaScript関数は「レシピ」なので、
「書く(定義)」と「使う(呼び出し)」はセット だと覚えておいてください。
引数の数が合わなくてもエラーにならない
JavaScript は、引数の数が合わなくてもエラーになりません。
function add(a, b) {
return a + b;
}
console.log(add(1)); // NaN(b が undefined なので)
console.log(add(1, 2, 3)); // 3(3つ目は無視される)
JavaScriptこれは初心者には少し罠です。
「引数が足りないときは undefined になる」ということを知っておくと、
バグの原因を追いやすくなります。
必要なら、デフォルト値をつけることもできます。
function add(a = 0, b = 0) {
return a + b;
}
JavaScriptまとめ:関数定義で本当に押さえてほしいこと
関数は、
「処理に名前をつけて、何度でも呼び出せるようにしたもの」。
基本形はこれ。
function 名前(引数1, 引数2, ...) {
// 処理
return 結果; // 必要なら
}
JavaScript重要なポイントは、
関数定義と関数呼び出しは別
引数で「変わる部分」を受け取り、return で「結果」を返せるfunction 文・関数式・アロー関数は、どれも関数を定義する書き方の違い
「1つの責務」に名前をつけると、コードが読みやすくなる
もしよければ、
「自分のよくやる処理」を1つ関数にしてみてください。
例えば「税込価格を計算する」「挨拶文を作る」「配列の平均を出す」など。
その瞬間から、あなたはもう「関数を使って設計しているプログラマー」です。

