Truthy or Falsy
- Booleanコンテキストに現れた時に true とみなされる値=truthy
- Booleanコンテキストに現れた時に false とみなされる値=falsy
- falsyのものは以下のもののみ。
- false
- 0
- -0
- 0n
- "" (空文字)
- null
- undefined
- NaN(Not a Number)
確認
console.log(Boolean(false)); //false
console.log(Boolean(0)); //false
console.log(Boolean(-0)); //false
console.log(Boolean(0n)); //false
console.log(Boolean("")); //false
console.log(Boolean(undefined)); //false
console.log(Boolean(NaN)); //false
これ以外のものは全部truthyである。例えば、すごく奇妙なことではあるが、以下の結果はtrueである。
console.log(Boolean(new Boolean(false))); //true
#利用例1:変数チェック
文字列が空であるかどうかのチェック
function helloname(name) {
//nameが空であるかどうかのチェック
if (!name) {
name = 'Taro';
}
console.log("Hello " + name)
}
helloname();
利用例2:変数チェック+代入を一気にやる方法(ショートサーキット評価)
論理演算子は左から右へ評価されるため、論理演算子で左辺を評価した時点で論理式の結果が確定した場合には右辺の評価を行わないことを、ショートサーキット評価といいます。例えば、A && Bという論理式があった場合、Aがfalseなら、その時点で式全体の結果はfalseで確定するため、Bがどうであるかについてはチェックしません。:
valがtruthyならそのまま代入。valがfalsyなら評価を終了して右項に移動。
let val = "";
let x = val || "Bob";
console.log(x); //Bob
エラーがあればエラーメッセージを表示
error = new Error('foo');
console.log(error && error.message); //foo