やあ、JavaScriptの世界へようこそ!
フロントエンドという広大な荒野で、これまで数え切れないほどのバグと戦ってきたアーキテクトです。
初めてコードを書くとき、`var` や `let`、そして今回扱う `const` の違いに悩むのは、誰もが通る道です。でも安心して。この概念さえ掴んでしまえば、あなたの書くコードはぐっと「壊れにくい、信頼できるもの」に変わります。
今日は、JavaScriptの「定数」こと `const` について、肩の力を抜いてお話ししましょう。
—
1. 「const」は「ラベルを貼り付けたら、もう剥がせない」と覚えよう
まずは `const` の基本ルールです。`const` は「Constant(定数)」の略。一度何かを代入したら、二度と別のものを代入できないという強い意志を持つキーワードです。
例えるなら、「中身を詰め替えることができない頑丈な宝箱」のようなものです。
const myName = “太郎”;
// これはOK!名前が太郎であることに変わりはないからね。
console.log(myName);
// でも、ここで別の名前を入れようとすると…
myName = “次郎”; // !!ここでエラーが発生します!!
// Uncaught TypeError: Assignment to constant variable.
「なんでエラーになるの?」と不安になる必要はありません。これはJavaScriptが「君、さっき『これは太郎だ』って約束したよね? なのに途中で変えるのは危ないよ!」と守ってくれているサインなんです。
—
2. なぜ「オブジェクト」の中身は変えられるのか?
ここで多くの初心者が「あれ?」と躓くポイントがあります。`const` で宣言したはずの「オブジェクト」や「配列」の中身は、なぜか書き換えられてしまうんです。
const user = { name: “太郎”, age: 20 };
// あれ? constなのに書き換えられる!
user.age = 21;
console.log(user.age); // 21 になっちゃった!
「嘘つき!定数じゃないの?」と思いますよね。でも、これにはちゃんとした理由があるんです。
「中身」ではなく「住所」を固定しているだけ
JavaScriptにおけるオブジェクトや配列は、メモリという巨大な倉庫の中にある「場所(住所)」を指し示す「リモコン」のようなものだと考えてみてください。
- `const` が守っているのは、そのリモコンそのものです。
- 別のリモコン(新しいオブジェクト)に持ち替えることは絶対に許されません。
- でも、リモコンで操作して、倉庫の中身(プロパティ)をいじることは禁止されていないんです。
つまり、`const user = { … }` という命令は、「この住所にあるデータを、今後ずっと `user` と呼びますよ」という住所の固定契約であって、「倉庫の中身を一生変えてはいけない」という契約ではない、というわけです。
—
3. 現場のアーキテクトが「基本はconst」と教える理由
実務の現場では、可能な限り `const` を使うのが鉄則です。なぜなら、「ここは絶対に変わらないはずだ」という確信が持てるコードは、バグを生みにくいからです。
逆に、何でもかんでも `let`(あとで再代入できる変数)を使ってしまうと、後からコードを見返したときに「あれ? この変数は途中で書き換わっているかな? どこで書き換わったんだっけ?」と迷子になってしまいます。
私からのアドバイス:まずは「const」から書き始めよう
コードを書くとき、迷ったらこうしてみてください。
1. とりあえず `const` で宣言する。
2. もし途中でどうしても「あ、この値は後で計算して書き換えなきゃいけないな」と気づいたら、その時初めて `let` に変える。
これだけで、あなたのコードの品質は劇的に向上します。
—
まとめ:あなたのコードは、もっと優しくなれる
`const` は単なるルールの押し付けではありません。それは、未来の自分や、一緒に働く仲間が「ここは変わらないんだな」と安心して読めるようにするための、コード上の優しさなんです。
- `const` は「再代入」を許さない頑丈なラベル。
- オブジェクトの中身が変えられるのは、あくまで「住所」を固定しているだけだから。
- 迷ったらまずは `const`。必要に応じて `let` に変える。
最初は難しく感じるかもしれませんが、毎日触れていれば、まるで自分の指先のように自然に使えるようになります。焦らず、少しずつJavaScriptという言語の「性格」と仲良くなっていきましょう。
もしまた分からないことがあれば、いつでも聞きに来てくださいね。あなたの挑戦を、心から応援しています。

コメント