JavaScript | 基礎構文:データ型 – typeof 演算子

JavaScript
スポンサーリンク

初心者向け:typeof 演算子の基本

typeof は「値のデータ型を文字列で教えてくれる」演算子です。型を確認したいときの最初の相棒になります。


できることと基本の使い方

typeof 123        // "number"
typeof "hello"    // "string"
typeof true       // "boolean"
typeof undefined  // "undefined"
typeof null       // "object"(注意!後述)
typeof Symbol("x")// "symbol"
typeof 10n        // "bigint"
JavaScript
  • 結果は文字列: 例えば "number", "string" のように返ります。
  • 式でもOK: 変数や計算結果に使えます。

代表的な型の判定

  • 数値(Number):
typeof 3.14        // "number"
typeof NaN         // "number"(NaNでも number)
JavaScript
  • 文字列(String):
typeof `template`  // "string"
JavaScript
  • 真偽値(Boolean):
typeof (5 > 3)     // "boolean"
JavaScript
  • 未定義(Undefined):
let x;
typeof x           // "undefined"
JavaScript
  • 意図的な空(Null)の歴史的仕様:
typeof null        // "object"(バグ由来の仕様)
// null 判定は value === null を使う
JavaScript
  • シンボル(Symbol)と大きな整数(BigInt):
typeof Symbol()    // "symbol"
typeof 1n          // "bigint"
JavaScript

オブジェクト・配列・関数の判定

  • オブジェクト(Object)全般:
typeof {a:1}       // "object"
JavaScript
  • 配列(Array)は typeof だと “object”:
typeof [1,2,3]     // "object"
Array.isArray([1,2]) // true(配列判定はこれを使う)
JavaScript
  • 関数(Function)は特別に “function”:
typeof function(){} // "function"
typeof (() => {})   // "function"
JavaScript

よくある落とし穴と回避策

  • null が “object”:
    • 回避: value === null で判定する。
  • 配列の判定:
    • 回避: Array.isArray(value) を使う。
  • NaN は “number”:
    • 回避: NaN 判定は Number.isNaN(value) を使う。
  • 未宣言変数でも安全:
// typeof は未宣言でも ReferenceError を出さず "undefined" を返す
typeof notDeclared   // "undefined"
JavaScript
  • class でも “function”:
class A {}
typeof A             // "function"(クラスは関数の糖衣構文)
JavaScript

実用パターン

  • 型に応じて処理を切り替える:
function describe(v) {
  switch (typeof v) {
    case "string":  return `文字列: ${v}`;
    case "number":  return `数値: ${v}`;
    case "boolean": return `真偽値: ${v}`;
    case "bigint":  return `BigInt: ${v}`;
    case "symbol":  return `Symbol: ${String(v)}`;
    case "function":return `関数`;
    case "undefined": return "未定義";
    case "object":  return v === null ? "null" : "オブジェクト";
  }
}
JavaScript
  • 配列を安全に扱う:
function asArray(x) {
  if (Array.isArray(x)) return x;
  return [x]; // 配列でなければ配列化
}
JavaScript

ミニ練習

  • 問1: 次の結果を予想せよ。
typeof null       // ?
typeof NaN        // ?
typeof []         // ?
typeof (() => {}) // ?
JavaScript

解答: "object", "number", "object", "function"

  • 問2: 値が配列なら長さ、それ以外なら型名を返す関数を書け。
function info(v) {
  return Array.isArray(v) ? v.length : typeof v;
}
JavaScript
  • 問3: NaN のときだけ「NaN」と表示し、それ以外は typeof の結果を表示せよ。
function typeOrNaN(v) {
  return Number.isNaN(v) ? "NaN" : typeof v;
}
JavaScript

まとめ

  • typeof は型を文字列で返す基本ツール。
  • null は “object”、配列は “object”、関数は “function” がポイント。
  • 配列判定は Array.isArray、NaN 判定は Number.isNaN を使う。
  • 未宣言でも安全に “undefined” を返すため、ガードに便利。
タイトルとURLをコピーしました