いいんだよねこれ?ってよくなるので。覚えた方がいい。
Contents
falseとして扱われる値
- false
- 空文字列
- undefined
- NaN
- null
- 0 またはそれと等価な値(-0など)
trueとして扱われる値
- true
- 任意の文字列(空白文字を含む)
- 0 でない値(Number.MIN_VALUEを含む)
- 任意のオブジェクト(要素数を問わない)
間違えそうなステートメント
要素がない配列やオブジェクトもtrue扱いされる
console.log(Boolean(" ")); //→空白文字はtrue
console.log(Boolean("\n")); //→特殊文字もtrue
console.log(Boolean([])); //→空配列もtrue
console.log(Boolean({})); //→空オブジェクトもtrue
配列に要素が残っていないなら…みたいな処理をしたい場合はlengthを取ればOK。
let nullArr = [];
console.log(Boolean(nullArr.length)); //→0なのでfalseになる
let nullObj = {};
console.log(Boolean(Object.keys({nullObj).length)); //→0なのでfalseになる
“0”という文字列はtrue扱いされる
let sampleObj = {"a":1, "b":2, "c":3, "x":0, "y":"0"};
console.log(Boolean(sampleObj["a"])); //→任意の文字はtrue
console.log(Boolean(sampleObj["n"])); //→undefinedなのでfalse
console.log(Boolean(sampleObj["x"])); //→0はfalse
console.log(Boolean(sampleObj["y"])); //→"0"という文字列なのでtrue
結構やりがちです。対策としては単項プラスをつけてやることで文字列であっても数値型を返してくれます。
console.log(Boolean(+sampleObj["y"])); //→数値として見てくれるのでfalseになる