【入門編】 厳格モード(use strict)と変数宣言 – JavaScript実践ガイド

こんにちは!フロントエンドの現場で長年コードと向き合ってきたアーキテクトです。

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’;` を置く習慣を、今日から始めてみませんか?

あなたのエンジニアライフが、少しでも快適で、楽しいものになりますように!

コメント

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