こんにちは。JavaScriptの世界へようこそ。
コードを書いていて、「あれ?今この変数、中身は何が入ってるんだっけ?」と迷子になること、ありますよね。そんな時、一番頼りになる相棒が `typeof` 演算子です。
今日は、この `typeof` との付き合い方について、少しだけ「裏の顔」も含めてお話ししようと思います。難しいことは考えず、リラックスして読んでくださいね。
—
1. `typeof` は「名札を読んでくれる店員さん」
JavaScriptで変数の正体を知りたい時、私たちは `typeof` を使います。
イメージとしては、「中身が見えないギフトボックスに、どんな種類のプレゼントが入っているか教えてくれる店員さん」だと思ってください。
使い方はとてもシンプルです。
// 変数の型をチェックしてみよう
let name = “JavaScript”;
console.log(typeof name); // 結果: “string” (文字列だよ!と教えてくれる)
let age = 25;
console.log(typeof age); // 結果: “number” (数字だよ!と教えてくれる)
let isHappy = true;
console.log(typeof isHappy); // 結果: “boolean” (はい・いいえの判定だよ!)
これだけ見ると、「なんだ、すごく簡単じゃないか!」と思いますよね。そう、基本的にはこの通りなんです。でも、プログラミングの世界には、ちょっとした「お茶目な嘘」が隠れていることがあります。
—
2. なぜか「null」が「object」と答える罠
さて、ここからが少しだけ泥臭い話です。JavaScriptを学び始めた人が必ず一度は遭遇する「謎の現象」があります。
それが、「`null` を調べると `object` と返ってくる」という問題です。
let nothing = null;
console.log(typeof nothing); // 結果: “object” …えっ?
「`null` は『空っぽ』という意味じゃないの? なんで『オブジェクト(物)』なんて言うの?」と混乱しますよね。これ、実はJavaScriptが生まれた1995年当時、設計ミスとしてそのまま残ってしまった「歴史的な遺産」なんです。
現場の知恵:どうやって回避する?
現場のエンジニアたちは、このバグを逆手に取って嘆くのではなく、「そういうものだ」と割り切って、別の方法でチェックする習慣をつけています。
もし、「本当に空っぽ(null)なのか?」を確認したい時は、`typeof` を信じずに、直接 `===` を使って比較するのが、最も安全で確実な「大人のやり方」です。
let data = null;
// typeofでチェックすると「object」になるので罠にハマる
if (typeof data === “object”) {
console.log(“これはオブジェクトかな?(でもnullかもしれない…)”);
}
// これが現場でよく使う「確実な」書き方!
if (data === null) {
console.log(“ちゃんと空っぽ(null)だと判断できたよ!”);
}
—
3. なぜこんなことが起きるの?(少しだけ深掘り)
なぜこんなことが起きるのか、不思議に思いますよね。
実は、JavaScriptの最初の仕様では、変数の型を「ビット」という0と1の信号で管理していました。その際、`null` は「すべてが0」という信号で表現されていたのですが、当時のJavaScriptの判定ルールでは「0で始まる信号はオブジェクトだ!」とみなすようになっていたのです。
今となっては修正したくても、世界中のWebサイトが壊れてしまうため、あえて修正できない「愛すべき不具合」として残っています。
大丈夫です。あなたがおかしいわけではありません。 JavaScriptという言語が、長い歴史の中で背負っているちょっとした「癖」なんです。
—
4. まとめ:初心者が守るべき「型判定の心得」
最後に、実務で役立つ心得をまとめておきますね。
1. 基本は `typeof` でOK!
文字列、数字、真偽値(true/false)を調べる時は、自信を持って `typeof` を使ってください。
2. `null` のチェックには注意する!
「空っぽかな?」と不安になった時は、`typeof` に頼らず `=== null` で直接確認する癖をつけましょう。
3. 完璧を目指さなくていい!
JavaScriptは、型に少し寛容な言語です。だからこそ、こうした「揺らぎ」とどう付き合うかが、エンジニアとしての腕の見せ所でもあります。
プログラミングをしていると、「なんだこれ!」と思うような挙動にたくさん出会うはずです。でも、それはあなたがしっかりとコードと向き合っている証拠。一つひとつ、こうして解き明かしていけば、いつの間にかJavaScriptの面白いクセも、手足のように操れるようになりますよ。
焦らず、楽しく、コードを書いていきましょうね!

コメント