Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

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

論理積 (&&)

BaselineWidely available

論理積 (&&) 演算子 (論理結合) を一組の論理型のオペランドに対して使用すると、すべてのオペランドがtrue である場合にのみtrue になります。それ以外の場合はfalse になります。

一般的には、この演算子は左から右に向けて評価した際に最初の偽値のオペランドに遭遇したときにはその値を、またはすべてが真値であった場合は最後のオペランドの値を返します。

試してみましょう

const a = 3;const b = -2;console.log(a > 0 && b > 0);// Expected output: false

構文

js
x && y;

解説

論理積 (&&) はオペランドを左から右に向けて評価し、遭遇した最初の偽値のオペランドを直ちに返します。すべての値が真値であった場合、最後のオペランドの値が返されます。

ある値がtrue に変換できる場合、その値は真値 (truthy) と呼ばれます。ある値がfalse に変換できる場合、その値は偽値 (falsy) と呼ばれます。

false に変換することができる式の例を示します。

  • false
  • null
  • NaN
  • 0
  • 空文字列 ("" または'' または``)
  • undefined

論理積演算子は次のように、論理型でない値はそのまま温存して返します。

js
result = "" && "foo"; // result には "" (空文字列) が代入されるresult = 2 && 0; // result には 0 が代入されるresult = "foo" && 4; // result には 4 が代入される

&& 演算子では論理値以外のオペランドを使用することができますが、返値が常に論理型プリミティブに変換することが可能であるため、論理演算子と見なすことができます。返値(または一般的な式)を対応する論理値に明示的に変換するには、二重の否定演算子またはBoolean コンストラクターを使用してください。

短絡評価

論理積の式は短絡演算子です。各オペランドが論理値に変換されるとき、ある変換結果がfalse であった場合、論理積演算子は停止してその偽値のオペランドの元の値を返します。残りのオペランドは評価されません

以下の擬似コードを考えてみてください。

(偽値の式) && expr

expr の部分は評価されません。最初のオペランドである(偽値の式)偽値と評価されるからです。expr が関数であった場合、その関数は呼び出されません。以下の例を参照してください。

js
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 を無視します。

演算子の優先順位

AND 演算子は OR 演算子よりも高い優先順位を持つので、&& 演算子は|| 演算子よりも先に実行されます(演算子の優先順位を参照)。

js
true || false && false; // true を返すtrue && (false || false); // false を返す(2 === 3) || (4 < 0) && (1 === 1); // false を返す

論理積の使用

以下のコードは&& (論理積) 演算子の例を示しています。

js
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 を返す

論理型の変換規則

AND から OR への変換

論理型に関する以下の操作は、

js
bCondition1 && bCondition2

常に以下のものと等しくなります。

js
!(!bCondition1 || !bCondition2)

OR から AND への変換

論理型に関する以下の操作は、

js
bCondition1 || bCondition2

常に以下のものと等しくなります。

js
!(!bCondition1 && !bCondition2)

入れ子になった括弧の除去

論理式は左から右に評価されるので、いくつかのルールに従って複雑な式から括弧を削除することは常に可能です。

以下の論理型に関する複合操作は、

js
bCondition1 || (bCondition2 && bCondition3)

常に以下のものと等しくなります。

js
bCondition1 || bCondition2 && bCondition3

仕様書

Specification
ECMAScript® 2026 Language Specification
# prod-LogicalANDExpression

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp