こんにちは!フロントエンドの現場で長年コードと向き合ってきたアーキテクトです。
JavaScriptの世界へようこそ。この言語は自由で、時にとても大らかです。でも、その「大らかさ」が原因で、初心者のうちは思わぬバグに頭を抱えることがよくあります。
今日は、そんな「JavaScriptの気まぐれな優しさ」をあえて封印して、堅実に開発するための魔法の呪文『use strict(厳格モード)』についてお話しします。
—
1. JavaScriptの「いい加減さ」が招く悲劇
まずは、ちょっと想像してみてください。あなたは今、スーパーでお買い物をしています。
通常、買い物をするには「かご」が必要です。でも、JavaScriptというお店は、かごを持たずにいきなり商品を手に取っても、「あ、それ買ったのね!」と、勝手にレジを通そうとするようなお店なんです。
// かご(変数)を宣言せずに、いきなり値を入れちゃう
price = 100;
// 普通の言語なら「そんな変数知らないよ!」と怒られるところですが…
console.log(price); // なぜか「100」と表示される!
一見便利そうですよね? でも、これが大規模なアプリ開発になると地獄の始まりです。
もしあなたが「`prcie`(スペルミス)」と書いてしまったらどうなるでしょう? JavaScriptは「ああ、新しい変数を作ったのね!」と気を利かせて、知らないうちにグローバル変数(どこからでもアクセスできる危険な変数)を勝手に作ってしまうんです。
これが原因で、後から「あれ? なんでこの値が勝手に変わってるの?」と、何時間もデバッグする羽目になります。
—
2. 魔法の呪文「’use strict’」を唱えよう
そんな「勝手な解釈」を禁止し、「ちゃんとルールを守って宣言しなさい!」とJavaScriptに厳しく指導してもらうのが`’use strict’`(厳格モード)です。
使い方は簡単。ファイルの先頭、あるいは関数の先頭にこの文字列を書くだけです。
‘use strict’; // これが魔法の呪文!
price = 100; // さっきのコードをもう一度実行すると…
// → Uncaught ReferenceError: price is not defined
// 「おい!変数宣言してないぞ!」と、JavaScriptが怒って止めてくれます。
この「怒ってくれる」ことが、実は開発者にとっては最高の味方なんです。エラーが出てくれれば、その場でタイポ(スペルミス)に気づけますからね。
—
3. let や const との相性は最強
最近のJavaScript(ES6以降)では、`var` ではなく `let` や `const` を使うのが定石です。これらは「ブロックスコープ」といって、「その中だけで使える」という強力な管理能力を持っています。
`use strict` を使うと、さらにこの管理が徹底されます。
‘use strict’;
// 正しい書き方
let price = 100;
const tax = 0.1;
console.log(price + (price tax)); // 110
これらは「かご」を明確に用意する行為です。`const` は一度入れたら中身を変えられない「開かずの箱」、`let` は「あとで中身を入れ替えられる箱」と考えると分かりやすいでしょう。
—
4. なぜ「厳格」にする必要があるの?
「厳しいルールなんて窮屈じゃない?」と思うかもしれません。でも、考えてみてください。
- エラーの早期発見: 実行する前に「ここが間違ってるよ」と教えてくれる。
- コードの安全性: 意図しない変数の上書きを防げる。
- パフォーマンス向上: ブラウザ側も「ルールがしっかりしている」と分かれば、最適化しやすくなる。
現場のプロは、例外なくこの `use strict` を使います。それは、「自分自身のうっかりミスを、コンピューターに守ってもらうため」なんです。
—
最後に:つまずくのは当たり前です
ここまで読んで「なるほど!」と思っても、実際にコードを書いていると、また `ReferenceError` に出くわすかもしれません。でも、それはあなたが「守られている証拠」です。
エラーが出たら、「お、JavaScriptが守ってくれたぞ!ありがとう!」と心の中でつぶやいてみてください。そうすれば、デバッグの時間は「苦しい作業」から「間違い探しゲーム」に変わります。
最初は小さな一歩で大丈夫。まずは全てのJavaScriptファイルの先頭に `’use strict’;` を置く習慣を、今日から始めてみませんか?
あなたのエンジニアライフが、少しでも快適で、楽しいものになりますように!

コメント