こんにちは!JavaScriptの世界へようこそ。
フロントエンドからサーバーサイドまで、あらゆる場所で動くこの言語は本当に魅力的ですよね。
今回は、JavaScriptを学び始めたばかりの人が必ず最初に出会う関門、「変数の宣言(`var`・`let`・`const`)」についてお話しします。
「とりあえず動くから `var` でいいや」と思っていませんか?
実は、現代のJavaScript開発において、`var` は「禁忌(使ってはいけないもの)」とされています。代わりに私たちは、`const` を最優先し、必要に応じて `let` を使うというルールを徹底しています。
なぜそんなルールがあるのか?
ここをクリアすれば、あなたの書くコードの安全性は劇的に跳ね上がりますよ。さあ、一緒に本質をマスターしていきましょう!
—
1. 変数とは何か?(身近な例えで理解する)
プログラミングにおける「変数」とは、よく「データをしまっておくための箱」に例えられます。
例えば、ゲームのスコアを保存したいとき、
- 箱に「`score`」という名前をつける
- その中に「`100`」という数字を入れる
これが変数宣言の基本です。JavaScriptでは、この「箱」を作るために3つのキーワード(`var`, `let`, `const`)が用意されています。しかし、この箱の扱い方が歴史的背景や仕様によって大きく異なります。
—
2. 三銃士の正体:var・let・const の違い
それぞれの特徴を、直感的な言葉で整理してみましょう。
- `const`(コンスト / 定数)
- 一度入れたら中身を変えられない「厳重なタイムカプセル」です。
- 基本的にすべての変数をこれで作りたい主役です。
- `let`(レット / 変数)
- 中身を何度でも書き換えられる「普通のダンボール箱」です。
- スコアやカウンターなど、値が変化することが確実な場合のみ使います。
- `var`(バ。過去の遺物)
- ルールがガバガバでどこからでも中身を触られてしまう「鍵の壊れたロッカー」です。
- 現代のモダンなJavaScriptでは絶対に使いません。
—
3. なぜ `var` を捨てて、`const` を優先すべきなのか?
初心者のうちは、「値が変わるかもしれないから、とりあえず `let` や `var` にしておこう」と考えがちです。しかし、これがバグの温床になります。
プログラミングの現場で最も恐ろしいのは、「意図しないところで勝手に変数の値が書き換えられてしまうこと」です。
次のコードを見てください。`var` がいかに危険かを物語っています。
// varを使った恐ろしい例
var playerName = “勇者”;
// 1000行くらいの長いコードの途中で、うっかり同じ名前で再宣言してしまったとする…
var playerName = “スライム”;
console.log(playerName); // 出力結果: “スライム” (名前が上書きされてしまった!)
`var` は、「同じ名前の変数を何度でも再宣言できてしまう」という致命的な仕様を持っています。これが何万行もある巨大なアプリだったら……? どこで名前が書き換わったのか分からず、デバッグ地獄に陥ります。
さらに、`var` は「スコープ(変数が有効な範囲)」のルールも緩く、意図せずグローバル空間(プログラム全体)を汚染してしまうバグを引き起こします。
`let` と `const` はエラーで守ってくれる
これが `let` や `const` だとどうなるでしょう?
// letやconstで同じ名前の変数を再宣言しようとすると…
let playerName = “勇者”;
let playerName = “スライム”; // 💥 SyntaxError: Identifier ‘playerName’ has already been declared
このように、現代のJavaScriptエンジン(V8など)は、同じスコープ内で同じ名前の変数を二重に作ろうとすると、即座にエラーを出して私たちのミスを未然に防いでくれます。 優しい番人が見張ってくれているようなものですね。
—
4. 実践:どう使い分ければいいの?(ベストプラクティス)
迷ったら、以下のシンプルな黄金律に従ってください。
1. 基本はすべて `const` で宣言する
2. 値の再代入(中身の入れ替え)が必要な場合だけ `let` に格下げする
3. `var` は一生使わない
具体的なコードで見てみましょう。
// 1. 設定値や固定のデータは const
const TAX_RATE = 0.1; // 消費税率は変わらない
const appTitle = “My Portfolio”;
// 2. カウンターや状態など、変化するものは let
let userScore = 0;
userScore = 10; // 点数が上がった!再代入はOK
// もし const の変数に再代入しようとすると…
const MAX_Level = 99;
// MAX_Level = 100; 💥 TypeError: Assignment to constant variable. (エラーになる)
「`const` なのに値が変わるの?」と混乱する初心者がいますが、`const` が縛っているのは「箱そのもの(参照先)」です。オブジェクトや配列の中身のプロパティを変更することは `const` でも可能です(これについては少し慣れてから調べればOKです!)。
—
5. まとめ
いかがだったでしょうか?
- `var` はルールが緩すぎてバグの元凶になるため、もう使わない。
- 変数は原則 `const`で宣言し、再代入が必要な場合のみ `let` を使う。
- このルールを守るだけで、あなたのコードの安全性と読みやすさはプロのレベルにグッと近づきます。
ここをクリアすれば、JavaScriptの基本はバッチリマスターできたも同然です!
自信を持って、次のステップへ進んでいきましょう。あなたのコーディングライフを応援しています!