JavaScript/typeof
typeof
編集typeof
は、JavaScriptにおいて値のデータ型を文字列として返す演算子です。任意の値に対してその型を判定するために使用されます。
基本構文
編集typeof operand
- operand: 判定対象の値。オペランドは変数やリテラル、式など何でも指定可能です。
戻り値
編集typeof
演算子は、以下のような文字列を返します。
"undefined"
: 未定義の値(変数が宣言されているが値が設定されていない場合)。"boolean"
: 真偽値。"number"
: 数値(NaN
やInfinity
も含む)。"bigint"
: BigInt値。"string"
: 文字列。"symbol"
: Symbol型。"object"
: オブジェクト、配列、null
。"function"
: 関数。
使用例
編集// プリミティブ型の判定 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"
を返す点など、注意が必要なケースがあります。- より詳細な型判定には他の方法と組み合わせて使用することが推奨されます。