🔖
【JavaScript】typeof の使い方と注意点を解説(null や配列の扱いに注意)
はじめに
JavaScriptで変数のデータ型を調べるときに使われる typeof 演算子。
基本的な使い方はとてもシンプルですが、いくつか注意すべき落とし穴もあります。
本記事では、typeof の基本的な使い方から、
よくある落とし穴や、正しく型を判定するための代替手段についても解説します。
1. typeof の基本的な使い方
typeof は、変数や値のデータ型を文字列で返す演算子です。
console.log(typeof 'hello'); // "string"
console.log(typeof 42); // "number"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
括弧なしでも使えますが、可読性を上げるために括弧を付けることもあります。
console.log(typeof('hello')); // "string"
2. 注意点①: null の型は "object"
JavaScriptでは、null に対して typeof を使うと、なぜか "object" が返ってきます。
console.log(typeof null); // "object"
これは JavaScript に長く残っている仕様のひとつで、typeof を使って null を正しく判定することはできません。
そのため、null を判定するときは、===(厳密等価演算子)で比較します。
value === null
3. 注意点②: 配列も "object" と判定される
配列も typeof では "object" と返ります。
console.log(typeof [1, 2, 3]); // "object"
配列かどうかを判定するときは、Array.isArray() を使うのが確実です。
Array.isArray([1, 2, 3]); // true
4. 判定される主な型一覧
| 値 | typeof の結果 |
|---|---|
| 'hello' | "string" |
| 42 | "number" |
| true | "boolean" |
| undefined | "undefined" |
| null |
"object"(注意) |
| [1, 2, 3] |
"object"(注意) |
| { a: 1 } | "object" |
| function() {} | "function" |
関数にだけ "function" が返るのも、typeof の特徴です。
5. おわりに
typeof はシンプルで便利な演算子ですが、
-
nullも"object"と判定される - 配列も
"object"と判定される
といった落とし穴があるため、使い方には少し注意が必要です。
正確な型判定をしたい場合は、Array.isArray() や value === null といった判定方法を使うと安心です。
本記事が参考になれば幸いです。
Discussion