JavaScriptのTruthyな値とFalsyな値
概要
JavaScriptでは、全ての値は真偽値のコンテキストで「truthy」または「falsy」に評価されます。この章では、どのような値がtruthyまたはfalsyとして扱われるか、またその重要性について解説します。
目次
- TruthyとFalsyな値とは
- 論理否定演算子 (
!と!!) - 特定の値に対するTruthyとFalsyの評価
- 練習問題
1. TruthyとFalsyな値とは
- Falsyな値は、論理コンテキストで
falseとして扱われる値です。これらの値には、0、''(空文字列)、null、undefined、NaNが含まれます。 - Truthyな値は、論理コンテキストで
trueとして扱われる値です。これは、Falsyな値以外のすべての値です。
2. 論理否定演算子 (!と!!)
!演算子は値を論理値に変換し、その逆を返します。つまり、Truthyな値はfalseに、Falsyな値はtrueになります。!!演算子(!を二回使用)は値を論理値に変換しますが、値を逆転させることなくそのまま返します。つまり、Truthyな値はtrueに、Falsyな値はfalseになります。
3. 特定の値に対するTruthyとFalsyの評価
''(空文字列)、0、null、undefined、NaNは、!!を使用して確認するとfalseを返します。- それ以外の値(
'a'、1、-1、[]、['a']、{}、{ a: 'b' }など)はtrueを返します。
4. 練習問題
下記console.logの出力を答えよ
const boolean = true
console.log('boolean=>', boolean)
console.log('!boolean=>', !boolean)
console.log('!!boolean=>', !!boolean)
console.log('!!!boolean=>', !!!boolean)
console.log("!!''=>", !!'')
console.log("!!'a'=>", !!'a')
console.log('!!0=>', !!0)
console.log('!!1=>', !!1)
console.log('!!-1=>', !!-1)
console.log('!![]=>', !![])
console.log("!!['a']=>", !!['a'])
console.log('!!{}=>', !!{})
console.log("!!{a: 'b'}=>", !!{ a: 'b' })
console.log('!!null=>', !!null)
console.log('!!undefined=>', !!undefined)
console.log('!!NaN=>', !!NaN)
練習問題の解答
以下に練習問題の各console.logステートメントの出力結果を示します。
console.log('boolean=>', boolean)=>trueconsole.log('!boolean=>', !boolean)=>falseconsole.log('!!boolean=>', !!boolean)=>trueconsole.log('!!!boolean=>', !!!boolean)=>falseconsole.log("!!''=>", !!'')=>falseconsole.log("!!'a'=>", !!'a')=>trueconsole.log('!!0=>', !!0)=>falseconsole.log('!!1=>', !!1)=>trueconsole.log('!!-1=>', !!-1)=>trueconsole.log('!![]=>', !![])=>trueconsole.log("!!['a']=>", !!['a'])=>trueconsole.log('!!{}=>', !!{})=>trueconsole.log("!!{a: 'b'}=>", !!{ a: 'b' })=>trueconsole.log('!!null=>', !!null)=>falseconsole.log('!!undefined=>', !!undefined)=>falseconsole.log('!!NaN=>', !!NaN)=>false