for文の中でconstって使えるの?再代入できないのに大丈夫?|JavaScript学習メモ

JavaScriptを学習中に、ふと「えっ?」と思ったことがあります。

配列から1つずつ要素を取り出して表示する、よくある for 文の書き方です。

for (let i = 0; i < characters.length; i++) {
  const character = characters[i];
  console.log(character.name);
}

この const character = characters[i]; のところ。
「あれ? const って再代入できないはずなのに、ループのたびにこれでいいの?」
と、不思議に思ったんです。

目次

for文のたびにconstで代入してもOKな理由

結論から言うと、これは再代入ではなく“新しい定義”だからOKなんです!

JavaScriptでは、for (let i = …) のように let を使ったループの場合、ループのたびに新しいスコープ(コードの区画)が作られるという特徴があります。

なので、const character = ... のように書いても、実は毎回まったく新しい character という定数が作られているんですね。

なんでconstが推奨されるの?

ここで「じゃあ let でも良くない?」と思う方もいるかもしれません。

確かに let でも問題なく動きます。

let character = characters[i]; // これでも動く!

でも、再代入する予定がない変数には const を使うのが今のJavaScriptの基本ルールなんです。

その理由は:

  • 再代入のミスを防げる(安全)
  • コードを読む人にも意図が伝わりやすい(親切)
  • モダンなJSの書き方として定着している

ちなみに:オブジェクトの中身は変えられる!

ちょっとややこしいですが、const で定義したオブジェクトの中身(プロパティ)は書き換えられます。

const character = { name: "にんじゃわんこ", age: 14 };
character.age = 15; // これはOK!
character = {};     // これはNG!(再代入になるから)

だから const =「まったく不変」というわけではなく、
「定数名そのものに、別の値を再代入できない」という意味なんですね。

このあたりの話はこちらの記事でも詳しく書きました 👉

学びまとめ

  • for 文で毎回 const を使ってもOKなのは、スコープが毎回新しく作られるから
  • 再代入しない変数は基本的に const にするのがベストプラクティス
  • 小さな違和感や疑問からでも、深い理解につながる!

おわりに

「え、これっていいの?」と思った小さな疑問から、スコープや再代入のしくみまで知ることができました。

JavaScriptって、表面的に書くだけじゃなくて、“なぜこうなるか”を考えるともっと楽しくなる気がします。

これからも「?」を大切にしながら学んでいこうと思います📝✨

同じようにモヤッとした人のヒントになればうれしいです🌷

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

2歳の娘と夫との3人暮らし
働きながら、不動産・副業・Webスキル習得をコツコツ継続中
理想の暮らしと働き方を目指して、等身大の学びをシェアしています

コメント

コメントする

目次