🔖
【JavaScript】typeof の使い方と注意点を解説(null や配列の扱いに注意)
はじめに
JavaScriptで変数のデータ型を調べるときに使われる typeof
演算子。
基本的な使い方はとてもシンプルですが、いくつか注意すべき落とし穴もあります。
本記事では、typeof
の基本的な使い方から、
よくある落とし穴や、正しく型を判定するための代替手段についても解説します。
typeof
の基本的な使い方
1. 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"
null
の型は "object"
2. 注意点①: JavaScriptでは、null
に対して typeof
を使うと、なぜか "object"
が返ってきます。
console.log(typeof null); // "object"
これは JavaScript に長く残っている仕様のひとつで、typeof
を使って null
を正しく判定することはできません。
そのため、null
を判定するときは、===
(厳密等価演算子)で比較します。
value === null
"object"
と判定される
3. 注意点②: 配列も 配列も 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