Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
typeof 演算子は、オペランドの値の型を示す文字列を返します。
型を返すオブジェクトまたはプリミティブ型を表す式です。
以下は typeof が返す可能性がある値の一覧です。型とプリミティブの詳細については、JavaScript のデータ構造のページも参照してください。
| Undefined | "undefined" |
| Null | "object" (理由) |
| 論理型 | "boolean" |
| 数値型 | "number" |
| 長整数型 | "bigint" |
| 文字列型 | "string" |
| シンボル型 | "symbol" |
| 関数オブジェクト (ECMA-262 の用語では [[Call]] を実装したもの、クラスも関数) | "function" |
| その他のオブジェクト | "object" |
この値のリストは網羅的なものです。仕様を遵守するエンジンは、掲載されている値以外を生成する(または過去には生成していた)ことは報告されていません。
JavaScript の最初の実装では、JavaScript の値は型タグと値で表現されていました。オブジェクトの型タグは 0 で、null は NULL ポインター (ほとんどのプラットフォームで 0x00) として表されていました。その結果、null はタグの型として 0 を持っていたため、typeof の返値は "object" です。(リファレンス)
ECMAScript の修正案が (オプトインを使用して) 提案されましたが、却下されました。それは typeof null === "null" という結果になるものでした。
new で呼び出されるコンストラクター関数はすべて、プリミティブ型以外の値を返します("object" または "function")。 ほとんどはオブジェクトを返しますが、特記すべき例外として、Function は関数を返します。
typeof 演算子は、優先順位が加算 (+) などの二項演算子よりも高くなります。そのため、加算結果の型を評価するには括弧が必要です。
typeof は宣言されていない識別子があっても、"undefined" を返し、エラーは発生しません。
しかし、typeof を同じブロック内の字句宣言(let、const、using、await using、class)の前に使用すると、ReferenceError が発生します。 ブロックスコープの変数は、ブロックの開始から初期化が処理されるまでの間、一時的なデッドゾーンにあり、その間にアクセスするとエラーが発生します。ブロックスコープ内の変数は、ブロックの開始から初期化が処理されるまで「一時的なデッドゾーン」にあり、その間にアクセスされるとエラーが発生します。
詳しくは typeof 演算子と undefined を参照してください。
現在のブラウザーではすべて、標準外のホストオブジェクト document.all は undefined 型になります。
document.all は偽値でもあり、undefined と緩い等価性がありますが、undefined ではありません。document.all が "undefined" という型を持つケースは、ウェブ標準では、ウェブ互換性を目的とした ECMAScript 標準の「意図的な違反」として分類されています。
typeof は非常に便利ですが、汎用性はそれほど高くありません。たとえば、typeof [] は "object" になります。typeof new Date() や typeof /abc/ などと同様です。
型チェックの精度を上げるために、ここではカスタム関数 type(value) を紹介します。これは主に typeof の動作を模倣しますが、プリミティブ型以外のもの(つまりオブジェクトや関数)については、可能な限り詳細な型名を返します。
存在しない可能性がある変数を調べるには、ReferenceError が発生する可能性があるため、typeof nonExistentVar === "undefined" を使用してください。この動作は、カスタムコードでは模倣できないためです。
| ECMAScript® 2027 Language Specification # sec-typeof-operator |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2026年4月1日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.