JavaScriptの型判別
JavaScriptで型判別をする方法
複雑な言語仕様のせいで、判別したい型によって方法が違うのでまとめる
結論
それぞれの方法で検証した結果は必要なく、方法だけ知りたいという人向け
比較演算子を用いた式のみを記述する
実際にif文で使用する場合は以下のように記述する
code:checkUndefined.js
if (値 === undefined) {
// 値がundefinedだった場合の処理
}
undefined
code:check.js
(値 === undefined)
null
code:check.js
(値 === null)
number(数値)
code:check.js
(typeof 値 === "number")
string(文字列)
code:check.js
(typeof 値 === "string")
boolean(真偽値)
code:check.js
(typeof 値 === "boolean")
配列
code:check.js
(Array.isArray(値))
ES5より前はこれを使う
code:check.js
(値 instanceof Array)
連想配列
code:check.js
(!Array.isArray(値) && 値 instanceof Object)
配列と区別する必要がない場合は(値 instanceof Object)のみで十分
関数・アロー関数
code:check.js
(typeof 値 === "function")
関数とアロー関数を区別する方法はわからなかった
シンボル
code:check.js
(typeof 値 === "symbol")
型判別の構文が返す値
ここからは細かい検証結果をまとめたもの
typeof
table:typeof
型 戻り値
undefined "undefined"
null "object"
number "number"
string "string"
boolean "boolean"
配列 "object"
連想配列 "object"
関数 "function"
アロー関数 "function"
シンボル "symbol"
使い方
code:typeof.js
typeof 値 === 型の名前の文字列
この方法では大抵のイミュータブル型の判別が可能
しかし、"object"と分類されてしまう型の判別ができない
nullは値 === nullで判別可能
instanceof
前項のtypeofにて判別できなかった"object"に属する型について検証する
table:instanceof
型 Object Array
null false false
配列 true true
連想配列 true false
使い方
code:instanceof
型 instanceof 検証する型
問題は配列と連想配列を判別する方法だが、値 instanceof Arrayがtrueになるかfalseになるかで判別することが出来た