はじめに
みなさんはjavascriptでif文を書く時にどの値が true
または false
になるか覚えていますか?
Vue.jsやReact、Nuxt.jsやNext.jsなどJSフレームワークが出てきてJavascriptが簡単に使える世の中になった一方で、純粋なJavascript(Vanilla JSと言ったりもします)の知識を知らずにJSフレームワークを使われている場面が多い気がします。
そこでこの記事では、Javascriptでif文などの条件判定部分について、どういった値がtrue
または false
になるのかご紹介します。
truthy / falsyってきいたことある?
一言でいうと、if文など論理型コンテキスト判定でtrue
になるものを truthy
、 false
になるものを falsy
と言います。
(とはいっても開発の現場で truthy
、 falsy
という言葉を聞くことはほぼありません。笑)
Javascriptでの true / false 具体例一覧
ではどんな値がJavascriptで true
または false
となるのかその理由も一緒に見ていきましょう。
trueと判定されるもの(truthy)
- if (true) // boolean型はtrueならtrue
- if ({}) // オブジェクトはすべてtrue
- if (new Date()) // Dateオブジェクトすなわちオブジェクト型のためtrue
- if ([]) // 配列はすべてtrue
- if ("0") // 空文字列以外はすべてtrue
- if ("false") // 空文字列以外はすべてtrue
- if (-42) // 非ゼロの数値はtrue
- if (12n) // 非ゼロの数値はtrue
- if (3.14) // 非ゼロの数値はtrue
- if (-3.14) // 非ゼロの数値はtrue
- if (Infinity) // 非ゼロの数値はtrue
- if (-Infinity) // 非ゼロの数値はtrue
falseと判定されるもの(falsy)
- if (false) // boolean型はfalseならfalse
- if (null) // nullはfalse
- if (undefined) // undefinedはfalse
- if (0) // ゼロの数値はfalse
- if (-0) // ゼロの数値はfalse
- if (0n) // ゼロの数値はfalse
- if (NaN) // JavaScriptにおける特殊な値であり、これは数値としては無効であるためfalse
- if ("") // 空文字列はfalse
はい、いかがだったでしょうか?
思った通りというものもあれば、空のオブジェクトや空の配列がfalseじゃないなんて、、!と
以外だったものもあるかもしれません。
まとめ
まとめるとJavascriptでのtruthy
, falsy
の判定ルールは以下となっているようです。
Javascriptでtrueとなるもの
- 非ゼロの数値
- 非空文字列
- オブジェクト(空でも)
- 配列(空でも)
- 関数
- boolean型のtrue
Javascriptでfalseとなるもの
- 0
- NaN(Not a Number)
- 空文字列
- undefined
- null
- boolean型のfalse
JSフレームワークを使うときに、おろそかになりがちな基礎の部分なので
ぜひ振り返り用にときどき確認してもらえればと思います。