JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptにおけるundefinedの真偽値(Boolean値)とは?falsyな値を解説

undefinedのブール値はfalse

JavaScriptにおいて、undefinedのブール値(Boolean値)はfalseになります。これはundefinedだけに限った話ではなく、nullfalseNaN、そして空文字列("")も同様にfalseへと変換されます。

このように、Boolean()関数や条件式の中でfalseと評価される値のことは、一般的に「falsy(偽値)」と呼ばれます。それ以外のほとんどの値(0以外の数値、空でない文字列、オブジェクトなど)は「truthy(真値)」としてtrueに変換されます。

サンプルコード

次の例では、undefined、false、NaN、空文字列のブール値をそれぞれ表示しています。

最初の3行のコードでは、配列に「ホール(hole)」と呼ばれる空きが作られます。arr[6] = 7;を実行すると、インデックス4と5には値が存在しないため穴ができます。このホールは空の値にほかならないため、そこにはundefinedが入り、ブール値としてfalseが表示されます。

<html>
<body>
   <script>
      var arr = [1,2,3,4];
      arr[6] = 7; // インデックス5と6の間にホールができる
      var x = arr[4]; // 存在しない要素 → undefined
      document.write(Boolean(x));
      var y = undefined;
      document.write("</br>");
      document.write(Boolean(y));
      var z = 5/"k"; // 数値ではない計算結果 → NaN
      document.write("</br>");
      document.write(Boolean(z));
      var a = "";
      document.write("</br>");
      document.write(Boolean(a));
      document.write("</br>");
      var b = false;
      document.write(Boolean(b));
   </script>
</body>
</html>

実行結果

false
false
false
false
false

まとめ

JavaScriptでfalseと評価される主なfalsyな値は以下の通りです。

  • undefined
  • null
  • false
  • NaN(Not a Number)
  • 空文字列("")
  • 0(数値のゼロ、-0も含む)

条件分岐やバリデーション処理を行う際には、これらの値が暗黙的にfalseへ変換されることを理解しておくと、意図しないバグを防ぐことができます。

  1. JavaScriptのvoid 0とは?意味と使い方をわかりやすく解説

    JavaScriptには「void」という演算子があります。一見すると不思議な存在に見えますが、実はシンプルな役割を持っています。この記事では、void 0 の意味と、実際にどのような場面で使われるのかをわかりやすく解説します。 void演算子の基本的な意味 void 演算子は、与えられた式を評価したうえで、必ず「undefined」を返す演算子です。つまり、void(0) と書くことで、undefined というプリミティブな値を確実に取得することができます。 たとえば、void(0) は数値の 0 を評価した後、その結果を捨てて undefined を返します。評価する式が何であれ、結果は

  2. JavaScriptで<text>要素の値を変数に抽出する方法

    JavaScriptで要素の値を変数に抽出するにはSVGの<text>要素のテキスト値を変数に抽出したい場合は、textContentプロパティを使用します。基本的な書き方は以下の通りです。document.getElementById(yourTextIdValue).textContentgetElementById()メソッドで対象の要素をIDから取得し、そのtextContentプロパティを参照することで、要素内のテキストを文字列として変数に格納できます。textContentとinnerHTMLの違いなお、SVG要素の場合はinnerHTMLよりもtextContentを