🔖

【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