typeof

編集

typeof は、JavaScriptにおいて値のデータ型を文字列として返す演算子です。任意の値に対してその型を判定するために使用されます。

基本構文

編集
typeof operand
  • operand: 判定対象の値。オペランドは変数やリテラル、式など何でも指定可能です。

戻り値

編集

typeof 演算子は、以下のような文字列を返します。

使用例

編集
// プリミティブ型の判定
console.log(typeof undefined); // "undefined"
console.log(typeof true);      // "boolean"
console.log(typeof 42);        // "number"
console.log(typeof "Hello");   // "string"
console.log(typeof Symbol());  // "symbol"
console.log(typeof 10n);       // "bigint"

// オブジェクトの判定
console.log(typeof {});        // "object"
console.log(typeof []);        // "object" (配列もオブジェクト)
console.log(typeof null);      // "object" (歴史的な理由による特殊なケース)

// 関数の判定
console.log(typeof function() {}); // "function"

// 未定義の変数
let x;
console.log(typeof x);         // "undefined"

特殊ケース

編集

typeof 演算子には以下のような注意点があります。

null の判定

編集

typeof null"object" を返しますが、これはJavaScriptの設計上のバグとして知られています。null の判定には === null を使用することが推奨されます。

console.log(typeof null); // "object"
console.log(null === null); // true

配列の判定

編集

配列もオブジェクトとして扱われるため、typeof では "object" を返します。配列を判定するには Array.isArray() を使用してください。

const arr = [1, 2, 3];
console.log(typeof arr);           // "object"
console.log(Array.isArray(arr));   // true

未宣言の変数

編集

未宣言の変数に対して typeof を使用すると、エラーではなく "undefined" を返します。

console.log(typeof undeclaredVar); // "undefined"

他の型判定方法との比較

編集

JavaScriptには typeof 以外にも型を判定する方法があります。

  • **instanceof**: オブジェクトが特定のコンストラクタのインスタンスであるかを判定します。
  • **Array.isArray()**: 配列かどうかを判定します。
  • **Object.prototype.toString.call()**: 型情報を文字列として取得します。
console.log([] instanceof Array);                 // true
console.log(Object.prototype.toString.call([]));  // "[object Array]"

まとめ

編集
  • typeof は値の型を文字列で判定します。
  • typeof null"object" を返す点など、注意が必要なケースがあります。
  • より詳細な型判定には他の方法と組み合わせて使用することが推奨されます。