JavaScript 速習チュートリアル

JavaScript のブーリアン

1. ブーリアン(Boolean)データ型

JavaScript において、ブーリアンは以下の 2 つの値のうちいずれか 1 つしか取ることができないプリミティブデータ型です。

  • true(真)
  • false(偽)

エクスプレッション(式)が返すブーリアン値は、JavaScript におけるすべての比較(Comparisons)および条件(Conditions)の基礎となります。

2. ブーリアンの主な特徴

  • truefalse はブーリアンデータ型そのものです。
  • ブーリアン値として取り得るのは truefalse の 2 つのみです。
  • これらは必ず小文字で記述する必要があります。
  • 文字列ではないため、クオーテーション(引用符)なしで記述します。

3. ブーリアンのユースケース

プログラミングでは、以下のような「2 つの状態のいずれか」を表現するデータ型が頻繁に必要になります。

  • はい(Yes)か、いいえ(No)か
  • オン(On)か、オフ(Off)か
  • 正しい(True)か、誤り(False)か

ブーリアン値は、JavaScript プログラミングにおける論理演算と制御フローの根幹を成す要素です。

4. 比較(Comparisons)

JavaScript のすべての比較演算子(==, !=, <, > など)は、比較の結果として true または false を返します。

x = 5 の場合の比較例を以下に示します。

説明返り値
等しい(Equal to)(x == 8)false
等しくない(Not equal to)(x != 8)true
より大きい(Greater than)(x > 8)false
より小さい(Less than)(x < 8)true

4.1 コード例

let x = 5;

(x == 8); // false を返します
(x != 8); // true を返します

5. 条件式(Conditions)

ブーリアンは if 文の中で多用され、ロジックに基づいてどのコードブロックを実行するかを決定します。

結果
if (day == "Monday")true または false
if (salary > 9000)true または false
if (age < 18)true または false

5.1 if 文の例

if (hour < 18) {
  greeting = "こんにちは";
} else {
  greeting = "こんばんは";
}

5.1 if 文の例

説明
For ループfor (i = 0; i < 5; i++)
While ループwhile (i < 10)
For in ループfor (x in person)
For of ループfor (x of cars)

6.1 While ループの例

while (i < 10) {
  text += i;
  i++;
}

7. Boolean() 関数

Boolean() 関数を使用すると、エクスプレッション(または変数)が true かどうかを確認できます。

Boolean(10 > 9); // true を返します

あるいは、関数を使わずに直接評価することも可能です。

(10 > 9); // true を返します

8. 「値」を持つものはすべて True(Truthy)

JavaScript では、実質的な値を持つものはすべて true として評価されます。これらを Truthy な値と呼びます。

8.1 Truthy の例

  • 100true
  • 3.14true
  • -15true
  • truetrue
  • "Hello"true
  • "false"(文字列としての false)は true
  • (7 + 1 + 3.14)(計算結果)は true

9. 「値」を持たないものはすべて False(Falsy)

実質的な値を持たないものは false として評価されます。これらを Falsy な値と呼びます。

9.1 Falsy の例

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

9.2 個別の評価例

let x = 0;
Boolean(x); // false

let y = -0;
Boolean(y); // false

let z = "";
Boolean(z); // false

let a; // undefined
Boolean(a); // false

let b = null;
Boolean(b); // false

let c = false;
Boolean(c); // false

let d = 10 / "こんにちは"; // NaN
Boolean(d); // false

10. オブジェクトとしてのブーリアン

通常、JavaScript のブーリアンはリテラルから作成されるプリミティブ値です。

let x = false;

しかし、new キーワードを使用してオブジェクトとして定義することも可能です。

let y = new Boolean(false);

10.1 型の比較

let x = false;
let y = new Boolean(false);

// typeof x は "boolean" を返します
// typeof y は "object" を返します

11. 注意事項:Boolean オブジェクトは避ける

実務において、Boolean オブジェクトを作成することは推奨されません。
new キーワードを使用するとコードが複雑になり、実行速度が低下する可能性があります。また、以下のような予期せぬ結果を招くことがあります。

11.1 比較時の挙動

プリミティブとオブジェクトを比較すると、意図しない結果になることがあります。

let x = Boolean(false);
let y = new Boolean(false);

(x == y);  // true (値が等しいため)
(x === y); // false (型が異なるため:プリミティブ vs オブジェクト)

さらに、JavaScript において 2 つのオブジェクトを比較した場合、常に false が返されます。 オブジェクトの内容が同じであっても、参照先が異なるためです。