Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。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 |
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
より良いインターネットのための青写真。
このコンテンツの一部は、©1998–2026 個人の mozilla.org 協力者です。コンテンツはクリエイティブ・コモンズ・ライセンスのもとで利用できます。