From ca804d69217a116d4886ce08ee0281e6ab6dbf15 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Thu, 17 Feb 2022 10:35:31 +0900 Subject: 2022/01/28 時点の英語版に同期 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reference/operators/logical_or/index.md | 180 ++++++++++----------- 1 file changed, 87 insertions(+), 93 deletions(-) (limited to 'files/ja/web/javascript/reference') diff --git a/files/ja/web/javascript/reference/operators/logical_or/index.md b/files/ja/web/javascript/reference/operators/logical_or/index.md index 29a177506c..5a100dbc55 100644 --- a/files/ja/web/javascript/reference/operators/logical_or/index.md +++ b/files/ja/web/javascript/reference/operators/logical_or/index.md @@ -3,151 +3,145 @@ title: 論理和 (||) slug: Web/JavaScript/Reference/Operators/Logical_OR tags: - JavaScript - - Language feature - - Logical Operator - - Operator - - Reference - - 演算子 - 言語機能 - 論理演算子 + - 演算子 + - リファレンス +browser-compat: javascript.operators.logical_or translation_of: Web/JavaScript/Reference/Operators/Logical_OR --- -
{{jsSidebar("Operators")}}
- -

論理和 (||) 演算子 (論理的分割) をオペランドの組み合わせに対して使用すると、オペランドのうち 1 つ以上が true である場合に true になります。一般的には {{jsxref("Boolean")}} (論理) 値で使用されます。その場合は論理値を返します。ただし || 演算子は実際には指定されたオペランドのうち一つの値を返すので、この演算子が論理値以外で使用された場合は、論理値以外の値を返すことになります。

+{{jsSidebar("Operators")}} -
{{EmbedInteractiveExample("pages/js/expressions-logical-or.html", "shorter")}}
+論理和 (`||`) 演算子 (論理的分割) をオペランドの組み合わせに対して使用すると、オペランドのうち 1 つ以上が true である場合に true になります。一般的には論理値(ブール値)で使用されます。その場合は論理値を返します。ただし `||` 演算子は実際には指定されたオペランドのうち一つの値を返すので、この演算子が論理値以外で使用された場合は、論理値以外の値を返すことになります。 - +{{EmbedInteractiveExample("pages/js/expressions-logical-or.html", "shorter")}} -

構文

+## 構文 -
expr1 || expr2
-
+```js +expr1 || expr2 +``` -

解説

+## 解説 -

expr1true に変換できる場合は expr1 を返し、それ以外の場合は expr2 を返します。

+`expr1` が `true` に変換できる場合は `expr1` を返し、それ以外の場合は `expr2` を返します。 -

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

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

false に変換されうる式の例を示します。

+false に変換されうる式の例を示します。 - +- `null` +- `NaN` +- `0` +- 空文字列 (`""` または `''` または ` `` `) +- `undefined` -

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

+`||` 演算子では論理値以外のオペランドを使用することができますが、返値が常に[論理型プリミティブ](/ja/docs/Web/JavaScript/Data_structures#論理型_boolean)に変換することが可能であるため、論理演算子と見なすことができます。返値 (または一般的な式) を対応する論理値に明示的に変換するには、二重の{{JSxRef("Operators/Logical_NOT", "否定演算子", "", 1)}}または {{jsxref("Global_Objects/Boolean/Boolean", "Boolean")}} コンストラクターを使用してください。 -

短絡評価

+### 短絡評価 -

論理和の式は左から右へと評価され、下記の規則を使用して「短絡」評価が可能なように評価されます。

+論理和の式は左から右へと評価され、下記の規則を使用して「短絡」評価が可能なように評価されます。 -

(真値の式) || expr は短絡評価で真値の式に評価されます。

+`(真値の式) || expr` は短絡評価で真値の式に評価されます。 -

短絡とは、上記の expr の部分が評価されず、したがって、これを行うことの副作用が効果を及ぼさないことを意味します (例えば、 expr が関数呼び出しであった場合、この場所では呼び出されません)。これは、最初のオペランドが評価された時点で、すでに演算子の値が決定しているためです。例を示します。

+短絡とは、上記の `expr` の部分が**評価されず**、したがって、これを行うことの副作用が効果を及ぼさないことを意味します(例えば、 `expr` が関数呼び出しであった場合、この場では呼び出されません)。これは、最初のオペランドが評価された時点で、すでに演算子の値が決定しているためです。例を示します。 -
function A(){ console.log('called A'); return false; }
+```js
+function A(){ console.log('called A'); return false; }
 function B(){ console.log('called B'); return true; }
 
 console.log( B() || A() );
 // 関数呼び出しによって "called B" がログ出力され、
 // それから true (演算子の結果の値) が出力されます。
-
+``` -

演算子の優先順位

+### 演算子の優先順位 -

以下の式は同じであるように見えるかもしれませんが、異なります。 && 演算子は || 演算子よりも先に実行されるからです (演算子の優先順位参照)。

+以下の式は同じであるように見えるかもしれませんが、異なります。 `&&` 演算子は `||` 演算子よりも先に実行されるからです([演算子の優先順位](/ja/docs/Web/JavaScript/Reference/Operators/Operator_Precedence)を参照)。 -
true || false && false      //  true を返す。 && が先に実行されるため
-(true || false) && false    // false を返す。演算子の優先順位が適用されないため
+```js +true || false && false // true を返す。 && が先に実行されるため +(true || false) && false // false を返す。演算子の優先順位が適用されないため +``` -

+## 例 -

OR の使用

+### OR の使用 -

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

+以下のコードは `||` (論理和) 演算子の例を示しています。 -
o1 = true  || true       // t || t returns true
-o2 = false || true       // f || t returns true
-o3 = true  || false      // t || f returns true
-o4 = false || (3 == 4)   // f || f returns false
-o5 = 'Cat' || 'Dog'      // t || t returns "Cat"
-o6 = false || 'Cat'      // f || t returns "Cat"
-o7 = 'Cat' || false      // t || f returns "Cat"
-o8 = ''    || false      // f || f returns false
-o9 = false || ''         // f || f returns ""
-o10 = false || varObject // f || object returns varObject
-
+```js +o1 = true || true // t || t は true を返す +o2 = false || true // f || t は true を返す +o3 = true || false // t || f は true を返す +o4 = false || (3 == 4) // f || f は false を返す +o5 = 'Cat' || 'Dog' // t || t は "Cat" を返す +o6 = false || 'Cat' // f || t は "Cat" を返す +o7 = 'Cat' || false // t || f は "Cat" を返す +o8 = '' || false // f || f は false を返す +o9 = false || '' // f || f は "" を返す +o10 = false || varObject // f || オブジェクトは varObject を返す +``` -
-

注: この演算子を使用していくつかの変数に既定値を提供する場合、偽値 が使用されないことに注意してください。{{jsxref("null")}} や {{jsxref("undefined")}} をフィルタリングする必要がある場合は、Null 合体演算子の使用を検討してください。

-
+> **Note:** この演算子を使用していくつかの変数に既定値を提供する場合、*偽値*が使用されないことに注意してください。 {{jsxref("null")}} や {{jsxref("undefined")}} をフィルタリングする必要がある場合は、[Null 合体演算子](/ja/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator)の使用を検討してください。 -

論理型の変換規則

+### 論理型の変換規則 -

AND から OR への変換

+#### AND から OR への変換 -

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

+**論理型**に関する以下の操作は、 -
bCondition1 && bCondition2
+```js +bCondition1 && bCondition2 +``` -

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

+常に以下のものと等しくなります。 -
!(!bCondition1 || !bCondition2)
+```js +!(!bCondition1 || !bCondition2) +``` -

OR から AND への変換

+#### OR から AND への変換 -

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

+**論理型**に関する以下の操作は、 -
bCondition1 || bCondition2
+```js +bCondition1 || bCondition2 +``` -

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

+常に以下のものと等しくなります。 -
!(!bCondition1 && !bCondition2)
+```js +!(!bCondition1 && !bCondition2) +``` -

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

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

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

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

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

+**論理型**に関する以下の複合操作は、 -
bCondition1 && (bCondition2 || bCondition3)
+```js +bCondition1 && (bCondition2 || bCondition3) +``` -

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

+常に以下のものと等しくなります。 -
!(!bCondition1 || !bCondition2 && !bCondition3)
+```js +!(!bCondition1 || !bCondition2 && !bCondition3) +``` -

仕様書

+## 仕様書 - - - - - - - - - - - - - -
仕様書
{{SpecName('ESDraft', '#prod-LogicalORExpression', 'Logical OR expression')}}
+{{Specifications}} -

ブラウザー実装状況

+## ブラウザーの互換性 -

{{Compat("javascript.operators.logical_or")}}

+{{Compat}} -

関連情報

+## 関連情報 - +- [Null 合体演算子 (`??`)](/ja/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator) +- {{jsxref("Boolean")}} +- {{Glossary("Truthy", "真値")}} +- {{Glossary("Falsy", "偽値")}} -- cgit v1.2.3-54-g00ecf