JavaScript Boolean

概要:このチュートリアルでは、JavaScriptのBooleanオブジェクトと、Booleanオブジェクトとbooleanプリミティブ型の違いについて学習します。

JavaScript booleanプリミティブ型

JavaScriptは、truefalseの2つの値を持つbooleanプリミティブ型を提供します。次の例では、falsetrueのboolean値を保持する2つの変数を宣言しています。

let isPending = false;
let isDone = true;Code language: JavaScript (javascript)

プリミティブなboolean値を保持する変数にtypeof演算子を適用すると、次の例のようにbooleanが返されます。

console.log(typeof(isPending)); //  boolean
console.log(typeof(isDone)); // booleanCode language: JavaScript (javascript)

JavaScript Booleanオブジェクト

booleanプリミティブ型に加えて、JavaScriptはグローバルなBoolean()関数(Bは大文字)も提供しており、他の型の値をbooleanにキャストできます。

次の例は、Boolean()関数を使用して文字列をboolean値に変換する方法を示しています。文字列が空ではないため、trueを返します。

let a = Boolean('Hi');
console.log(a); // true
console.log(typeof(a)); // booleanCode language: JavaScript (javascript)

Booleanは、booleanプリミティブ型のラッパーオブジェクトでもあります。つまり、trueまたはfalseBooleanコンストラクタに渡すと、Booleanオブジェクトが作成されます。例:

let b = new Boolean(false);Code language: JavaScript (javascript)

プリミティブ値を取り戻すには、次のようにBooleanオブジェクトのvalueOf()メソッドを呼び出します。

console.log(b.valueOf()); // falseCode language: JavaScript (javascript)

ただし、BooleanオブジェクトのtoString()メソッドを呼び出すと、"true"または"false"という文字列値が返されます。例:

console.log(b.toString()); // "false"Code language: JavaScript (javascript)

JavaScript boolean vs. Boolean

次の例を考えてみましょう。

let completed = true;
let active = new Boolean(false);Code language: JavaScript (javascript)

まず、activeはオブジェクトなので、プロパティを追加できます。

active.primitiveValue = active.valueOf();
console.log(active.primitiveValue); // falseCode language: JavaScript (javascript)

しかし、completed変数のようなプリミティブなboolean変数では、これはできません。

completed.name = 'primitive';
console.log(completed.name); // undefinedCode language: JavaScript (javascript)

第二に、Booleanオブジェクトのtypeofobjectを返し、プリミティブなboolean値のtypeofbooleanを返します。

console.log(typeof completed); // boolean
console.log(typeof active); // objectCode language: JavaScript (javascript)

第三に、Booleanオブジェクトにinstanceof演算子を適用するとtrueが返されます。ただし、boolean値にinstanceof演算子を適用するとfalseが返されます。

console.log(completed instanceof Boolean); // false
console.log(active instanceof Boolean); // trueCode language: JavaScript (javascript)

特に式で使用する場合、Booleanオブジェクトを使用しないことをお勧めします。混乱を招く可能性が高いためです。例:

let falseObj = new Boolean(false);
if (falseObj) {
    console.log('weird part of the Boolean object');
}Code language: JavaScript (javascript)

スクリプトの動作。

  • まず、false値のBooleanオブジェクトラッパーとしてfalseObjを作成します。
  • 次に、if文でfalseObjを使用します。falseObjはオブジェクトであり、JavaScriptエンジンはそれをtrueのboolean値に強制変換します。その結果、ifブロック内のステートメントが実行されます。

次の表は、JavaScriptのBooleanbooleanの違いをまとめたものです。

演算子booleanBoolean
 typeofbooleanboolean
 objectinstanceof Booleanfalse

true

異なる型の値をBoolean型に変換するにはBoolean()関数を使用することをお勧めしますが、プリミティブなboolean値のラッパーオブジェクトとしてBooleanを使用することは避けてください。

このチュートリアルは役に立ちましたか?