【JS応用|初心者向け】なぜ変数の「入れ物」を変える必要があるの?ブロックスコープの正体

JavaScriptを学び始めると、変数を宣言する時に「var」ではなく「let」や「const」を使いましょう、というアドバイスをよく耳にしますよね。その理由の核心にあるのが、今回解説する「ブロックスコープ」という概念です。

そもそも「スコープ」ってなに?

スコープとは、簡単に言うと「その変数がどこまで見えるか(どこまで使えるか)」という有効範囲のことです。例えば、家の中に自分専用の部屋があるようなものです。リビング(全体)から見えるものと、自分の部屋(ブロック)の中だけで使うものを区別しないと、名前が同じ変数が混ざってしまい、プログラムが混乱してしまいます。

「ブロック」ってどの範囲?

JavaScriptにおけるブロックとは、波括弧 { } で囲まれた範囲のことを指します。if文やfor文、あるいはただの { } だけでもブロックは作れます。

letとconstの魔法
昔のJavaScriptで使われていた「var」は、関数単位でしかスコープを作れませんでした。しかし、「let」や「const」は、この { } で囲まれたブロックごとに独立した世界を作ってくれます。

具体的な事例を見てみましょう。
{
let message = “こんにちは”;
console.log(message); // ここでは表示される
}
console.log(message); // ここではエラーになる!

この例では、ブロックの外から中にアクセスしようとしたためエラーになります。一見不便に思えますが、これは「変数の衝突」を防ぐための強力なガードレールなのです。

なぜ初心者ほどブロックスコープを意識すべきか

初心者のうちは、コードが長くなると「あれ、この変数、さっきどこかで使ったっけ?」と混乱しがちです。ブロックスコープを意識して、必要な場所だけで変数を宣言するクセをつけると、バグが劇的に減ります。

例えば、for文の中だけで使うカウンター変数を「let」で宣言すれば、そのループが終わった瞬間にその変数は消滅します。これにより、メモリの節約にもなりますし、他の処理に悪影響を与える心配もありません。

プログラミングは「いかに自分や他人が読みやすいコードを書くか」というパズルに似ています。ブロックスコープという「部屋」を上手に使い分けて、散らからない綺麗なコードを目指していきましょう!

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