JavaScriptのtruthy
/falsy
な値は、true
あるいはfalse
と解釈されるだけで、値自体は変換されない。
そもそもtruthy/falsyとは
truthy
、あるいはfalsy
は、真偽値を評価するような式の中で、true
あるいはfalse
とみなされる値だ。
具体的には、以下の値はfalsy
、それ以外の値はtruthy
と判断される。
false
undefined
NaN
0
-0
0n
''
document.all
気をつけたい落とし穴
truthy
/falsy
な値は、条件文を簡潔に書ける一方、適当に使うと落とし穴にハマる。もといハマった。恥ずかしい思いをした。プログラミングを趣味とする以上、きっとこれからも数えきれないほどすることだろう。楽しみだ。
true/falseと等価ではない
truly
な値、falsy
な値が真偽値として扱われるのは、その値が単体で評価される場合である。例えば1 === true
は真にはならず、0 === false
も真にはならない。
true/falseには変換されない
truly
な値、falsy
な値は、true
あるいはfalse
として扱われるだけで、値が変換されるわけではない。例えばReactではcount !== 0 || <Component />
のように書かけるが、見よう見まねでcount || <Component />
みたいにすると0
が表示されてしまう。
また、余談だが&&
や||
でコンポーネントの表示を切り替えられるかどうか(真偽値が返された時に何も表示しないかどうか)は、使うフレームワークによる。注意したい。
気づいたら、Beauty & Stupidの替え歌を頭の中で歌っていた。懐かしい。