【JavaScript】条件判定等で false とみなされる値

更新日:2024/02/23

JavaScriptの条件判定で変数のみが記述されていることがあります。
このケースでは数値がtrueかfalseなのかが判定されます。
ここでは、どのような値がtrue、またはfalseになるのかをお伝えします。

 

条件式に値を指定した時の判定

if文などで条件式に値を指定すると、値が真偽値に変換されて条件判定されます。

例えば、次のコードは数値10が真偽値trueに変換されます。
そして、コンソールに "true" と表示されます。

if( 10 ){
  console.log( "true" );
}else{
  console.log( "false" );
}

0は、falseに変換されます。
その結果、次のコードはコンソールに "false" と表示されます。

if( 0 ){
  console.log( "true" );
}else{
  console.log( "false" );
}

 

値の真偽値変換

ほとんどの値は真偽値変換の結果、trueになります。
そのため、falseになる値を提示した方が効率的です。

変換結果が false になる値は、次の表のようになります。

undefinednullfalse
0NaN""(長さ0の文字)
0n(BigInt)

※オブジェクトはtrueを返します

 

値の真偽値変換は避ける

値の真偽値変換による条件判定は、意図があいまいになりやすいので避けるべきです。

次のコードは、文字列が空文字かどうかを判定しています。

const text = "";
if( !text ){
  console.log( "空文字です");
}

JavaScriptは変数の型チェックが無いので、text に数値が入っている可能性があります。
そして、数値0のときでも "空文字です" と表示されます。

次のコードのように、厳密等値比較で判定することをお勧めします。

if( text === "" ){
  console.log( "空文字です");
}

同様に、0 かどうかを判定するときは、0 と比較しましょう。

if( value === 0 ){
  console.log( "0です");
}

更新日:2024/02/23

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。