JavaScript | typeof 演算子

JavaScript JavaScript
スポンサーリンク

初心者向けにやさしく、実際に手を動かせる例題つきで詳しく説明します。読みやすく段階を追って進めます。


typeof の基礎(ざっくり)

typeof は「この値は**どんな種類(型)**かな?」を調べるための演算子です。
書き方は簡単:

typeof
JavaScript

戻り値は 文字列(例: "number", "string")になります。


typeof が返す主な値と例

戻り値説明
"number"数値(整数・小数・NaN を含む)typeof 123"number"
"string"文字列typeof 'hi'"string"
"boolean"真偽値typeof true"boolean"
"undefined"値が未定義(undefinedtypeof undefined"undefined"
"object"オブジェクト(配列・null・日付オブジェクトなども含む)typeof {}"object"
"function"関数(関数は特別に "function"typeof function(){}"function"
"symbol"Symboltypeof Symbol('x')"symbol"
"bigint"大きな整数を扱う BigInttypeof 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

答え2
true(配列は typeof では "object"
trueArray.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

まとめ(覚えておきたいこと)

  1. typeof は手軽に型チェックできる便利な道具。戻り値は文字列。
  2. null と配列は typeof だと区別できないので、=== nullArray.isArray() を使う。
  3. typeof は未宣言変数を調べるときに安全(エラーにならない) → 実用的。
  4. typeof は完全な型判定ツールではないが、簡単なチェックやデバッグに非常に役立つ。

タイトルとURLをコピーしました