初心者向けにやさしく、実際に手を動かせる例題つきで詳しく説明します。読みやすく段階を追って進めます。
typeof の基礎(ざっくり)
typeof は「この値は**どんな種類(型)**かな?」を調べるための演算子です。
書き方は簡単:
typeof 値
JavaScript戻り値は 文字列(例: "number", "string")になります。
typeof が返す主な値と例
| 戻り値 | 説明 | 例 |
|---|---|---|
"number" | 数値(整数・小数・NaN を含む) | typeof 123 → "number" |
"string" | 文字列 | typeof 'hi' → "string" |
"boolean" | 真偽値 | typeof true → "boolean" |
"undefined" | 値が未定義(undefined) | typeof undefined → "undefined" |
"object" | オブジェクト(配列・null・日付オブジェクトなども含む) | typeof {} → "object" |
"function" | 関数(関数は特別に "function") | typeof function(){} → "function" |
"symbol" | Symbol 型 | typeof Symbol('x') → "symbol" |
"bigint" | 大きな整数を扱う BigInt 型 | typeof 10n → "bigint" |
重要な注意(トリッキー)
typeof nullは"object"を返します(歴史的な仕様で、直感と違うので注意)。- 配列(
[])もtypeofでは"object"と出るので、配列かどうかを判定するには別の方法が必要です。
配列や null を正しく判定する方法
- 配列かどうか調べる:
nullかどうか調べる:
value === null
JavaScript- オブジェクトか(かつ配列ではない)かを判定する安全な方法:
typeof value === 'object' && value !== null && !Array.isArray(value)
JavaScript変数が未宣言(存在しない)場合の挙動
- アクセス(参照)するとエラー:
console.log(x)としたときxが宣言されていなければReferenceError。 typeofを使うとエラーにならない:typeof xは"undefined"を返してエラーになりません。
→ これを利用して「その変数が存在するか?」を安全に調べられます。
よくある誤解ポイントと補足
typeof NaN→"number"(NaNは数値型の特殊値)- 関数はオブジェクトの一種ですが、
typeofは関数を"function"と特別扱いします。 typeofの結果は文字列なので比較は文字列で行う(=== 'number'など)。
実践コード例(ブラウザのコンソールで試してみよう)
console.log(typeof 42); // "number"
console.log(typeof 'Hello'); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object" ← 注意
console.log(typeof [1,2,3]); // "object" ← 配列もobject
console.log(Array.isArray([1,2,3])); // true
console.log(typeof function(){}); // "function"
console.log(typeof Symbol('s')); // "symbol"
console.log(typeof 10n); // "bigint"
console.log(typeof NaN); // "number"
JavaScript初心者向けの例題(手を動かして練習)
問題1
次の値に対して typeof が返す文字列を書け。
a) 100
b) 'abc'
c) null
d) [1,2]
e) function(){}
答え1
a) "number"
b) "string"
c) "object" (注意点)
d) "object"(配列は "object" と出る)
e) "function"
問題2
次のコードは何を表示するか(true / false)?
const a = [];
console.log(typeof a === 'object');
console.log(Array.isArray(a));
JavaScript答え2true(配列は typeof では "object")true(Array.isArray で配列と判定できる)
問題3
変数 x が「未宣言」のとき、以下の2行はどうなる?
console.log(x); // A
console.log(typeof x); // B
JavaScript答え3
A: ReferenceError(変数が宣言されていないため)
B: "undefined"(typeof はエラーを投げず "undefined" を返す)
問題4(実用)
関数の引数 value が「文字列」かどうかをチェックしたい。書け。
答え4
function isString(value) {
return typeof value === 'string';
}
JavaScript問題5(応用)
value が「配列」なら "array"、nullなら "null"、それ以外は typeof の結果を返す関数を作れ。
答え5(例)
function kindOf(value) {
if (value === null) return 'null';
if (Array.isArray(value)) return 'array';
return typeof value;
}
JavaScriptまとめ(覚えておきたいこと)
typeofは手軽に型チェックできる便利な道具。戻り値は文字列。nullと配列はtypeofだと区別できないので、=== nullやArray.isArray()を使う。typeofは未宣言変数を調べるときに安全(エラーにならない) → 実用的。typeofは完全な型判定ツールではないが、簡単なチェックやデバッグに非常に役立つ。
