このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
論理積演算子 (&&)
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
論理積演算子 (&&) (論理結合)を一連の論理型のオペランドに対して使用すると、すべてのオペランドがtrue である場合にのみtrue になります。それ以外の場合はfalse になります。
一般的には、この演算子は左から右に向けて評価した際に最初の偽値のオペランドに遭遇したときにはその値を、またはすべてが真値であった場合は最後のオペランドの値を返します。
In this article
試してみましょう
const a = 3;const b = -2;console.log(a > 0 && b > 0);// 予想される結果: false構文
x && y解説
論理積 (&&) はオペランドを左から右に向けて評価し、遭遇した最初の偽値のオペランドを直ちに返します。すべての値が真値であった場合、最後のオペランドの値が返されます。
ある値がtrue に変換できる場合、その値は真値 (truthy) と呼ばれます。ある値がfalse に変換できる場合、その値は偽値 (falsy) と呼ばれます。
false に変換することができる式の例を示します。
falsenullNaN0- 空文字列 (
""または''または``) undefined
論理積演算子は次のように、論理型でない値はそのまま温存して返します。
result = "" && "foo"; // result には "" (空文字列) が代入されるresult = 2 && 0; // result には 0 が代入されるresult = "foo" && 4; // result には 4 が代入される&& 演算子では論理値以外のオペランドを使用することができますが、返値が常に論理型プリミティブに変換することが可能であるため、論理演算子と見なすことができます。返値(または一般的な式)を対応する論理値に明示的に変換するには、二重の否定演算子またはBoolean コンストラクターを使用してください。
短絡評価
論理積の式は短絡演算子です。各オペランドが論理値に変換されるとき、ある変換結果がfalse であった場合、論理積演算子は停止してその偽値のオペランドの元の値を返します。残りのオペランドは評価されません。
以下の擬似コードを考えてみてください。
(偽値の式) && expr
expr の部分は評価されません。最初のオペランドである(偽値の式) が偽値と評価されるからです。expr が関数であった場合、その関数は呼び出されません。以下の例を参照してください。
function A() { console.log("called A"); return false;}function B() { console.log("called B"); return true;}console.log(A() && B());// 関数 A の呼び出しによって "called A" をログ出力し、// && が false と評価し(関数 A が false を返し)、それから false をコンソールにログ出力します。// 論理積演算子はここで短絡となり、関数 B を無視します。演算子の優先順位
論理積演算子は論理和演算子よりも高い優先順位を持つので、&& 演算子は|| 演算子よりも先に実行されます(演算子の優先順位を参照)。
true || false && false; // truetrue && (false || false); // false(2 === 3) || (4 < 0) && (1 === 1); // false例
>論理積の使用
以下のコードは&& (論理積) 演算子の例を示しています。
a1 = true && true; // t && t で true を返すa2 = true && false; // t && f で false を返すa3 = false && true; // f && t で false を返すa4 = false && 3 === 4; // f && f で false を返すa5 = "Cat" && "Dog"; // t && t で "Dog" を返すa6 = false && "Cat"; // f && t で false を返すa7 = "Cat" && false; // t && f で false を返すa8 = "" && false; // f && f で "" を返すa9 = false && ""; // f && f で false を返す論理型の変換規則
論理積から論理和への変換
論理型に関する以下の操作は、
bCondition1 && bCondition2常に以下のものと等しくなります。
!(!bCondition1 || !bCondition2)論理和から論理積への変換
論理型に関する以下の操作は、
bCondition1 || bCondition2常に以下のものと等しくなります。
!(!bCondition1 && !bCondition2)入れ子になった括弧の除去
論理式は左から右に評価されるので、いくつかのルールに従って複雑な式から括弧を削除することは常に可能です。
以下の論理型に関する複合操作は、
bCondition1 || (bCondition2 && bCondition3)常に以下のものと等しくなります。
bCondition1 || bCondition2 && bCondition3仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # prod-LogicalANDExpression> |