Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

Boolean

BaselineWidely available

Boolean オブジェクトは論理値(true またはfalse)を表します。

解説

論理値プリミティブと Boolean オブジェクト

プリミティブの論理値であるtruefalse を、truefalse の値を持ったBoolean オブジェクトと混同しないでください。

Boolean オブジェクトの値がfalse である場合も含めて、オブジェクトは条件文に渡されるとすべてtrue と評価されます。例えば、以下のif 文の条件はtrue と評価されます。

js
const x = new Boolean(false);if (x) {  // このコードは実行されます。}

この振る舞いは論理値プリミティブには適用されません。例えば、以下のif 文の条件はfalse に評価されます。

js
const x = false;if (x) {  // このコードは実行されません}

オブジェクトを論理値でない値から論理値へ変換するためにnew を使ってBoolean() コンストラクターを使わないでください。代わりに、Boolean() を関数として使ったり、二重否定を使用したりすることで同じことが行えます。

js
const good = Boolean(expression); // これか、もしくは…const good2 = !!expression; //  …これを使ってくださいconst bad = new Boolean(expression); // これは使わないこと!!

Boolean オブジェクトの初期値として何らかのオブジェクトを指定した場合、それが値false を持つBoolean オブジェクトであっても、新しいBoolean オブジェクトは値true を持ちます。

js
const myFalse = new Boolean(false); // Booleanオブジェクト: falseconst g = Boolean(myFalse); // trueconst myString = new String("Hello"); // Stringオブジェクトconst s = Boolean(myString); // true

警告:コンストラクターとしてBoolean を使うことは滅多にありません。

論理値への型強制

論理値を期待する多くの組み込み演算は、まず引数を論理値に型強制 (Type coercion)します。この変換は次のように要約されます。

  • 論理値(boolean)はそのまま返されます。
  • undefinedfalse に変換されます。
  • nullfalse に変換されます。
  • 0,-0,NaNfalse に、それ以外の数値はtrue に変換されます。
  • 0nfalse に、その他のBigInttrue に変換されます。
  • Symboltrue になります。
  • すべてのオブジェクトはtrue になります。

メモ:非推奨のプロパティdocument.all はオブジェクトであるにもかかわらず、論理値に変換されるとfalse になります。このプロパティはレガシーで非標準であるため、使用しないでください。

注意:文字列への型強制数値への型強制などの他の型の変換とは異なり、論理値への型強制はオブジェクトからプリミティブに変換しようとするわけではありません。

言い換えれば、false に強制される値はほんの一握りで、これらはfalsy (偽値) と呼ばれる値です。それ以外の値はtruthy (真値) と呼ばれます。値が truthy (真値)であるかどうかは、論理演算子や条件文と共に使われるとき、あるいはあらゆる真偽値の文脈で使われるときに重要です。

JavaScriptで型強制と同じ効果を得るには、2つの方法があります。

  • 二重否定:!!xx を 2 回否定し、上記と同じアルゴリズムでx を論理値に変換します。
  • Boolean()関数、つまりBoolean(x) は上記と同じアルゴリズムを用いてx を論理値に変換します。

なお、truthy / falsy であることは、論理値プリミティブtruefalse緩く等しい (==) こととは異なることに注意してください。

js
if ([]) {  console.log("[] is truthy");}if ([] == false) {  console.log("[] == false");}// [] is truthy// [] == false

[] は truthy ですが、false と緩く等しいです。すべてのオブジェクトは truthy であるため、[] も truthy です。しかし、プリミティブであるfalse と比較する場合、[]Array.prototype.toString() によって"" というプリミティブに変換されます。文字列と論理値を比較すると、どちらも数値に変換され、どちらも0 になるので、[] == falsetrue となります。一般に、falsy であることと== false は次のようなケースで異なります。

  • NaN,undefined,null は falsy ですが、false と緩く異なります。
  • "0"(および"" ではないが0 に型強制される 他の文字列リテラル)は truthy ですが、false と緩く等しいです。
  • オブジェクトは常に truthy ですが、そのプリミティブ表現はfalse と緩く等しくなる可能性があります。

truthy な値がtrue と緩く等しくなる可能性はさらに低いです。すべての値は truthy か falsy のどちらかですが、ほとんどの値はtruefalse のどちらとも緩く異なります。

コンストラクター

Boolean()

新しいBoolean オブジェクトを生成します。

インスタンスメソッド

Boolean.prototype.toString()

このオブジェクトの値に応じて、文字列でtrue またはfalse のどちらかを返します。Object.prototype.toString() メソッドを上書きします。

Boolean.prototype.valueOf()

Boolean オブジェクトのプリミティブ値を返します。Object.prototype.valueOf() メソッドを上書きします。

Boolean オブジェクトを初期値 false で生成

js
const bNoParam = new Boolean();const bZero = new Boolean(0);const bNull = new Boolean(null);const bEmptyString = new Boolean("");const bfalse = new Boolean(false);

Boolean オブジェクトを初期値 true で生成

js
const btrue = new Boolean(true);const btrueString = new Boolean("true");const bfalseString = new Boolean("false");const bSuLin = new Boolean("Su Lin");const bArrayProto = new Boolean([]);const bObjProto = new Boolean({});

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-boolean-objects

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp