【入門編】 再宣言の可否とルール – JavaScript実践ガイド

こんにちは。現場で日々コードと格闘していると、時々「あれ?これって何でこう動くんだっけ?」と足元がふらつく瞬間がありますよね。特に、JavaScriptの変数まわり。`var`、`let`、`const`……名前は似ているけれど、実はそれぞれ性格が全然違うんです。

今日は、初学者が最初にぶつかる「再宣言」という壁について、少しだけ深く、でも優しく紐解いていきましょう。

—

変数の「再宣言」ってなに?

まずは言葉の整理から。再宣言とは、「もう一度同じ名前の箱を作ろうとすること」です。

// 再宣言のイメージ
var box = “りんご”;
var box = “みかん”; // 「同じ名前の箱をもう一個作っちゃえ!」←これが再宣言

現実世界で考えてみてください。あなたは自分の机の上に「思い出ボックス」という名前の箱を置きました。その直後に、同じ机の同じ場所に「思い出ボックス」という名前の箱をもう一つ置こうとしたら……「えっ、どっちの箱のこと?」とパニックになりますよね。

JavaScriptの古い書き方である`var`は、このパニックを許容してしまっていたんです。でも、今の主流である`let`と`const`は「それはダメ!」としっかり止めてくれます。なぜでしょうか?

—

1. 昔の王様 `var` のおおらかな性格

`var`は、JavaScriptが生まれた当初からの古い住人です。彼はとても「おおらか」……というより、少し無頓着でした。

var name = “田中さん”;
var name = “鈴木さん”; // エラーにならない!
console.log(name); // 結果:鈴木さん

一見便利そうですが、これ、大規模なプログラムだと地獄を見ます。例えば、自分で書いたコードのどこかでうっかり`var name`を再宣言してしまったら、大事なデータが上書きされて消えてしまう。でも、エラーが出ないから原因がさっぱり分からない。

昔のエンジニアたちは、この「予期せぬ上書き」というバグに何年も泣かされてきたんです。

—

2. 現代の守護者 `let` と `const`

そこで登場したのが、ES6(ECMAScript 2015)というモダンな規格で追加された`let`と`const`です。彼らは「安全第一」をモットーにしています。

let の場合:中身は変えていいけど、箱は一つだけ

`let`は「中身(値)」を書き換えることはできますが、同じ名前で箱を二度作ることは許しません。

let score = 100;
score = 200; // 中身の入れ替えはOK!
// let score = 300; // ここでエラー!「もうその名前の箱はありますよ!」と教えてくれる

const の場合:箱も中身も、絶対に譲らない

`const`は「定数(Constant)」の略です。一度決めたら、中身の入れ替えも、箱の再宣言も一切禁止。一番硬派なやつですね。

const tax = 0.1;
// tax = 0.08; // エラー!中身を変えようとすると怒られます
// const tax = 0.05; // もちろん再宣言もエラー!

—

なぜ「再宣言」を禁止するようになったのか?

設計思想を一言で言うと、「バグの芽を、プログラムを動かす前に摘むため」です。

人間は誰しもミスをします。うっかり同じ名前の変数を書いてしまうことは誰にでもあります。そのミスを、プログラムが実行された後に「変な値が入ってる!何で!?」と追いかけるのは、本当に骨が折れる作業なんです。

`let`や`const`は、僕たちがコードを書いている最中に「それ、重複してますよ!」と警告を出してくれる優秀なアシスタントのようなものなんです。「面倒くさいな」と感じるかもしれませんが、実はあなたの書くコードを壊れないように守ってくれている「盾」なんですよ。

—

まとめ:これからの指針

これから皆さんがコードを書くときは、以下の「3ステップ」を意識してみてください。

1. 基本は `const` を使う:ほとんどの変数は中身を入れ替える必要なんてありません。まずはこれを使ってください。
2. 中身を変える必要がある時だけ `let` にする:カウンターや、ループの中で値が変わるものだけですね。
3. `var` は使わない:歴史的な理由がある場合以外、現代のJavaScriptで`var`を使う理由はほぼありません。過去の遺産としてそっとしておいてあげましょう。

—

いかがでしたか?
「再宣言できない」というのは制限ではなく、実は「安心して開発するための安心設計」なんです。最初は窮屈に感じるかもしれませんが、慣れると`let`や`const`がいない世界には戻れなくなりますよ。

もしコードを書いていてエラーが出ても、「ああ、JavaScriptが今、僕のミスを未然に防いでくれたんだな」と優しく受け止めてあげてください。そうやって一つずつ、僕らはプロになっていくんです。応援していますよ!

コメント

タイトルとURLをコピーしました