From 6ef1fa4618e08426b874529619a66adbd3d1fcf0 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 12:07:59 +0100 Subject: unslug ja: move --- .../index.html | 295 +++++++++++++++++++++ 1 file changed, 295 insertions(+) create mode 100644 files/ja/conflicting/web/javascript/reference/operators_f71733c8e7001a29c3ec40d8522a4aca/index.html (limited to 'files/ja/conflicting/web/javascript/reference/operators_f71733c8e7001a29c3ec40d8522a4aca/index.html') diff --git a/files/ja/conflicting/web/javascript/reference/operators_f71733c8e7001a29c3ec40d8522a4aca/index.html b/files/ja/conflicting/web/javascript/reference/operators_f71733c8e7001a29c3ec40d8522a4aca/index.html new file mode 100644 index 0000000000..8b43c3de26 --- /dev/null +++ b/files/ja/conflicting/web/javascript/reference/operators_f71733c8e7001a29c3ec40d8522a4aca/index.html @@ -0,0 +1,295 @@ +--- +title: 論理演算子 +slug: Web/JavaScript/Reference/Operators/Logical_Operators +tags: + - JavaScript + - Operator +translation_of: Web/JavaScript/Reference/Operators +translation_of_original: Web/JavaScript/Reference/Operators/Logical_Operators +--- +
{{jsSidebar("Operators")}}
+ +

概要

+ +

{{ 原語併記("論理演算子", "Logical operators") }} は、基本的に真偽(論理)値とともに用いられ真偽値を返します。しかし、&& および || 演算子は真偽値ではない値も使うことができるため、その場合は、真偽値ではない値を返すことがあります。その場合の考え方は以下の「説明」の欄の記載の通りとなります。

+ +

説明

+ +

論理演算子を以下の表で説明します。:

+ + + + + + + + + + + + + + + + + + + + + + + + +
演算子使用法説明
論理 AND(&&)expr1 && expr2expr1 を false と見ることができる場合は、expr1 を返します。そうでない場合は、expr2 を返します。したがって、真偽値と共に使われた場合、 演算対象の両方が true ならば、&& は、true を返し、そうでなければ、false を返します。
論理 OR (||)expr1 || expr2expr1 を true と見ることができる場合は、expr1 を返します。そうでない場合は、expr2 を返します。したがって、真偽値と共に使われた場合、 演算対象のどちらかが true ならば、|| は、true を返し、両方とも false の場合は、false を返します。
論理 NOT (!)!expr単一の演算対象が true と見ることができる場合は、false を返します。そうでない場合は、true を返します。
+ +

true に変換できる値は、いわゆる {{Glossary("truthy")}} です。false に変換できる値は、いわゆる {{Glossary("falsy")}} です。

+ +

false と見ることができる式の例は、null、0、空文字列 ("")、あるいは、undefined と評価されるものです。

+ +

&&|| 演算子が真偽値ではない値である演算対象とともに用いることができても、それらは、真偽演算子と考えることができます。なぜなら、それらの戻り値は、常に、真偽値と見ることができるからです。

+ +

ショートサーキット評価

+ +

論理演算子は左から右へ評価されるため、論理演算子で左辺を評価した時点で論理式の結果が確定した場合には右辺の評価を行わないことを、ショートサーキット評価といいます。例えば、A && Bという論理式があった場合、Aがfalseなら、その時点で式全体の結果はfalseで確定するため、Bがどうであるかについてはチェックしません。:

+ + + +

 上記の式の anything の部分は評価されません。また、上記の式の anything の部分は (括弧で示しているとおり) ひとつの論理式ですので注意してください。

+ +

例えば、以下の 2 つの関数は等価です。

+ +
function shortCircuitEvaluation() {
+  doSomething() || doSomethingElse()
+}
+
+function equivalentEvaluation() {
+  var flag = doSomething();
+  if (!flag) {
+    doSomethingElse();
+  }
+}
+
+ +

しかし、以下の式は等価ではありません。これは演算子の優先順位のためであり、右側の演算子をひとつの式にする (必要に応じて括弧でグループ化する) 必要性の重要度を高めています。

+ +
false && true  || true      // true を返す
+false && (true || true)     // false を返す
+ +

論理 AND (&&)

+ +

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

+ +
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 を返します。
+
+ +

論理 OR (||)

+ +

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

+ +
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" を返します。
+
+ +

論理 NOT (!)

+ +

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

+ +
n1 = !true              // !t false を返します。
+n2 = !false             // !f true を返します。
+n3 = !"Cat"             // !t false を返します。
+
+ +

変換規則

+ +

AND から OR への変換

+ +

Boolean について以下の演算を行います:

+ +
bCondition1 && bCondition2
+ +

これは以下の演算と等価です:

+ +
!(!bCondition1 || !bCondition2)
+ +

OR から AND への変換

+ +

Boolean について以下の演算を行います:

+ +
bCondition1 || bCondition2
+ +

これは以下の演算と等価です:

+ +
!(!bCondition1 && !bCondition2)
+ +

NOT 間の変換

+ +

Boolean について以下の演算を行います:

+ +
!!bCondition
+ +

これは以下の演算と等価です:

+ +
bCondition
+ +

入れ子の括弧を削除する

+ +

論理演算子は左から右へ評価されるため、複雑な式の中にある括弧をいくつかの規則に従って削除することができます。

+ +

入れ子の AND を削除する

+ +

Boolean について以下の複雑な演算を行います:

+ +
bCondition1 || (bCondition2 && bCondition3)
+ +

これは以下の演算と等価です:

+ +
bCondition1 || bCondition2 && bCondition3
+ +

入れ子の OR を削除する

+ +

Boolean について以下の複雑な演算を行います:

+ +
bCondition1 && (bCondition2 || bCondition3)
+ +

これは以下の演算と等価です:

+ +
!(!bCondition1 || !bCondition2 && !bCondition3)
+ +

仕様

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
仕様書策定状況コメント
{{SpecName('ES1')}}{{Spec2('ES1')}}最初期の定義
{{SpecName('ES5.1', '#sec-11.11')}}{{Spec2('ES5.1')}}仕様書内のいくつかのセクションで定義: Logical NOT Operator, Binary Logical Operators
{{SpecName('ES6', '#sec-binary-logical-operators')}}{{Spec2('ES6')}}仕様書内のいくつかのセクションで定義: Logical NOT Operator, Binary Logical Operators
{{SpecName('ESDraft', '#sec-binary-logical-operators')}}{{Spec2('ESDraft')}}仕様書内のいくつかのセクションで定義: Logical NOT Operator, Binary Logical Operators
+ +

ブラウザ実装状況

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
機能ChromeFirefox (Gecko)Internet ExplorerOperaSafari
論理 AND (&&){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
論理 OR (||){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
論理 NOT (!){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
機能AndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
論理 AND (&&){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
論理 OR (||){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
論理 NOT (!){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

関連情報

+ + -- cgit v1.2.3-54-g00ecf