[JavaScript General] データ型とその判定
memo.
Contents
データ型
最新の ECMAScript 標準仕様では 7 つのデータ型が定義されています。
- 6 種類のプリミティブデータ型:
- Boolean
- Null
- Undefined
- Number
- String
- Symbol (ECMAScript 6 の新データ型)
- Object
真偽値での判定
if (値)
で以下が返ってくる。
- String … 空文字(
''
)以外だったらtrue
- Number …
0
かNaN
以外だったらtrue
- Boolean … そのまま
true
,false
- Object …
null
以外だったらtrue
- undefined, null … ともに
false
Object の判定
ひとくちに Object といっても、いろいろある。
例えば getElementById()
や getElementsByClassName()
とした場合に返ってくる値に応じて、処理を分けたいと思ったけれども、そもそもどう分けるべきなのか。
typeof 演算子では判別できない
typeof 演算子では、すべて object が返ってくるので判定できない。
const element = document.getElementById('test');
const elements = document.getElementsByClassName('hover');
const elements2 = document.getElementsByTagName('a');
console.log(typeof element); // object
console.log(typeof elements); // object
console.log(typeof elements2); // object
Object.prototype.toString.call() を使う
それぞれ何が返ってくるのかを調べると、以下のようである。
HTMLCollection
で判定すれば良さそうだ。
element is a reference to an Element object, or null if an element with the specified ID is not in the document.
elements is a live HTMLCollection of found elements.
elements is a live HTMLCollection (but see the note below) of found elements in the order they appear in the tree.
if (Object.prototype.toString.call(elements) === "[object HTMLCollection]") {
処理
}
See the Pen JavaScript: how to detect data types by DriftwoodJP (@DriftwoodJP) on CodePen.