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