こんにちは。フロントエンドの現場で長年コードを書き続けていると、「JavaScriptって自由すぎて、時に怖いよね」と感じることがよくあります。
あなたが今、変数やスコープの概念で少し頭を抱えているなら、それは「JavaScriptが初心者にとても優しい顔をして、実は裏でとんでもない手抜きを許している」という事実に気づき始めた証拠かもしれません。
今日は、その「手抜き」を許さないための強力な魔法、`”use strict”`(厳格モード)について、現場の知恵を交えてお話ししますね。
—
1. JavaScriptの「優しさ」は、時に「罠」になる
JavaScriptには、昔からの名残で「宣言していない変数にいきなり値を代入しても、エラーにせず勝手にグローバル変数を作ってくれる」という仕様があります。
例えるなら、「誰のものかわからない空き地に、勝手に自分の荷物を置いていいよ」というルールです。最初は便利に思えますが、プロジェクトが大きくなると、「この荷物(変数)、誰が置いたの? どこから来たの?」と大混乱が起きます。
この「無秩序な状態」を禁止してくれるのが、`”use strict”` です。
2. `”use strict”` は、プログラムの「誓約書」
JavaScriptファイルの先頭(あるいは関数の先頭)に `”use strict”;` と一行書くだけで、ブラウザに対して「このコードの中では、甘えを許さず厳しくチェックしてね!」という誓約書を提出することになります。
具体的に何が変わるのか、見てみましょう。
暗黙のグローバル変数を禁止する
一番の恩恵は、「宣言していない変数は使わせない」というルールです。
“use strict”; // これを書くことで、厳格モードがオンになります
// 普通ならエラーにならずに動いてしまうコード
message = “こんにちは!”;
// 厳格モードでは、ここで「ReferenceError: message is not defined」と叱ってくれます。
// 「宣言してない変数は使っちゃダメだよ!」と教えてくれるので、タイポ(打ち間違い)によるバグを未然に防げるんです。
これ、最初は「いちいち面倒だな」と感じるかもしれません。でも、開発現場ではこの「面倒」が、数時間かかるバグ調査を未然に防いでくれる命綱になります。
3. なぜ「変数宣言」が大切なのか?
`let` や `const` を使って変数を宣言することは、例えるなら「自分の持ち物に名前を書く」という行為です。
- `var`: 昔ながらのやり方。少しルーズで、予期せぬ場所から書き換えられてしまう隙があります。
- `let` / `const`: 現代のJavaScriptの正装。「この範囲(ブロック)の中だけで使うよ!」という境界線がはっきりしており、管理がとても楽です。
`”use strict”` を使うと、これらのルールがより強固に守られるようになります。
—
4. 現場からのアドバイス:怖がらずに使ってみよう
初学者のうちは、「エラーが出るのは怖い」と感じるのが当たり前です。でも、安心してください。`”use strict”` が出すエラーは、あなたを攻撃するためのものではなく、あなたのコードをより安全にするための「親切な警告」です。
もし、既存のコードに `”use strict”` を足してエラーがたくさん出たとしても、それは「これまで隠れていたバグが可視化されただけ」です。一つずつ名前を付けてあげれば、あなたのコードは格段に美しく、読みやすくなります。
覚えておきたいポイント
- ファイルの先頭に書こう: 基本はファイルの1行目に `”use strict”;` と書くのが今のスタンダードです。
- モダンな開発なら自動で入る: 最近のReactやVue、Next.jsといったフレームワークやビルドツールを使っていれば、実は裏側で最初から `strict mode` が有効になっていることがほとんどです。
—
最後に:小さな「こだわり」が、一流への近道
プログラミングの世界では、自分に厳しいルールを課せる人ほど、結果として「自由」になれます。変数を適当に扱わず、スコープを意識し、厳格モードでミスを潰す。そんな小さなこだわりが、やがてあなたの書くコードを、誰が見ても「お、しっかりしたコードだな」と思わせる品質へと高めてくれます。
最初はつまずくことも多いでしょう。でも、大丈夫。それはあなたが正しく成長している証拠です。
何かまた分からないことがあれば、いつでも聞きに来てくださいね。あなたのエンジニアライフが、少しでも楽しく、健やかなものになりますように!

コメント