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 --- .../operators/comparison_operators/index.html | 232 ---------------- .../operators/logical_operators/index.html | 295 --------------------- .../reference/operators/special/index.html | 5 - .../operators/special_operators/index.html | 5 - 4 files changed, 537 deletions(-) delete mode 100644 files/ja/web/javascript/reference/operators/comparison_operators/index.html delete mode 100644 files/ja/web/javascript/reference/operators/logical_operators/index.html delete mode 100644 files/ja/web/javascript/reference/operators/special/index.html delete mode 100644 files/ja/web/javascript/reference/operators/special_operators/index.html (limited to 'files/ja/web/javascript/reference/operators') diff --git a/files/ja/web/javascript/reference/operators/comparison_operators/index.html b/files/ja/web/javascript/reference/operators/comparison_operators/index.html deleted file mode 100644 index 5010c8eb89..0000000000 --- a/files/ja/web/javascript/reference/operators/comparison_operators/index.html +++ /dev/null @@ -1,232 +0,0 @@ ---- -title: 比較演算子 -slug: Web/JavaScript/Reference/Operators/Comparison_Operators -tags: - - JavaScript - - Operator - - Reference - - 演算子 -translation_of: Web/JavaScript/Reference/Operators -translation_of_original: Web/JavaScript/Reference/Operators/Comparison_Operators ---- -
{{jsSidebar("Operators")}}
- -

JavaScript には、厳密な比較と型変換の比較の両方があります。厳密な比較 (例: ===) は、オペランドが同じ型で、内容も一致している場合にのみ真になります。もっとよく使用される抽象的な比較 (例: ==) は、比較する前にオペランドを同じ型に変換します。抽象的な関係比較 (例: <=) では、比較前にまずオペランドがプリミティブ型に変換され、それから同じ型に変換されます。

- -

文字列は Unicode 値を使用した標準的な辞書順に基づいて比較されます。

- -
{{EmbedInteractiveExample("pages/js/expressions-equality.html")}}
- -
-
{{EmbedInteractiveExample("pages/js/expressions-strict-equality.html")}}
-
- -
- - - -

比較の機能は以下のとおりです。

- - - -

等価演算子

- -

等価 (==)

- -

等価演算子は、2 つのオペランドが同じ型でないならばオペランドを変換して、それから厳密な比較を行います。両方のオペランドがオブジェクトならば、 JavaScript は内部参照を比較するので、オペランドがメモリ内の同じオブジェクトを参照するときに等しくなります。

- -

構文

- -
x == y
-
- -

- -
1    ==  1         // true
-'1'  ==  1         // true
-1    == '1'        // true
-0    == false      // true
-0    == null       // false
-var object1 = {'key': 'value'}, object2 = {'key': 'value'};
-object1 == object2 // false
-0    == undefined  // false
-null == undefined  // true
-
- -

不等価 (!=)

- -

不等価演算子は、オペランド同士が等しくないならば真を返します。2 つのオペランドが同じ型でないならば、JavaScript は適切な型にオペランドを変換して比較しようとします。両方のオペランドがオブジェクトならば、JavaScript は内部参照を比較するので、オペランドがメモリ内の異なるオブジェクトを参照するときには等しくなりません。

- -

構文

- -
x != y
- -

- -
1 !=   2     // true
-1 !=  '1'    // false
-1 !=  "1"    // false
-1 !=  true   // false
-0 !=  false  // false
-
- -

一致 / 厳密等価 (===)

- -

厳密等価演算子は、型変換なしでオペランド同士が (上に示した通り) 厳密に等しければ真を返します。

- -

構文

- -
x === y
- -

- -
3 === 3   // true
-3 === '3' // false
-var object1 = {'key': 'value'}, object2 = {'key': 'value'};
-object1 === object2 //false
- -

不一致 / 厳密不等価 (!==)

- -

厳密不等価演算子は、オペランド同士が等しくないか、型が等しくない、あるいはその両方ならば真を返します。

- -

構文

- -
x !== y
- -

- -
3 !== '3' // true
-4 !== 3   // true
-
- -

関係演算子

- -

これらの演算子のそれぞれは、比較が行われる前に、そのオペランドをプリミティブに{{Glossary("Type_coercion", "型強制")}}します。両方とも文字列として終わる場合は、辞書順で比較され、そうでない場合は数値に変換されて比較されます。 NaN との比較は常に false を生み出します。

- -

大なり演算子 (>)

- -

大なり演算子は、左オペランドが右オペランドより大きければ、真を返します。

- -

構文

- -
x > y
- -

- -
4 > 3 // true
-
- -

大なりイコール演算子 (>=)

- -

大なりイコール演算子は、左オペランドが右オペランド以上ならば、真を返します。

- -

構文

- -
 x >= y
- -

- -
4 >= 3 // true
-3 >= 3 // true
-
- -

小なり演算子 (<)

- -

小なり演算子は、左オペランドが右オペランドより小さければ、真を返します。

- -

構文

- -
 x < y
- -

- -
3 < 4 // true
-
- -

小なりイコール演算子 (<=)

- -

小なりイコール演算子は、左オペランドが右オペランド以下ならば、真を返します。

- -

構文

- -
 x <= y
- -

- -
3 <= 4 // true
-3 <= 3 // true
-
- -

等価演算子の使用

- -

標準等価演算子 (==!=) は 2 つのオペランドの比較に抽象的等価比較アルゴリズムを使用します。オペランドの型が異なる場合は、比較を行う前にそれらを同じ型に変換しようとします。例えば 5 == '5' という式では、比較を行う前に右オペランドの文字列を数値に変換します。

- -

厳密等価演算子 (===!==) は厳密等価比較アルゴリズムを使用して、オペランドの型が同一かどうかに関する比較も行います。オペランドの型が異なれば、例えば 5'5' の比較では、同一性比較 5 !== '5'true と評価され、 5 === '5' のチェックは false 評価されます。

- -

厳密等価演算子を使うのは、オペランドが特定の型の特定の値でなければならない場合、言い換えればオペランドの正確な型が重要な場合です。それ以外では、2 つのオペランドが同じ型でなくても比較が可能になる、標準的な等価演算子を使えます。

- -

比較に型の変換が関わるとき (つまり厳密でない比較のとき)、 JavaScript は以下のように {{jsxref("String")}}, {{jsxref("Number")}}, {{jsxref("Boolean")}}, {{jsxref("Object")}} 型のオペランドを変換します。

- - - -
メモ: String オブジェクトはオブジェクト型であり、文字列型ではありません! String オブジェクトはほとんど使わないので、次の結果に驚くかもしれません。
- -
// 両方のオペランドが文字列型 (すなわちプリミティブな文字列) なので、true
-'foo' === 'foo'
-
-var a = new String('foo');
-var b = new String('foo');
-
-// a と b はオブジェクト型で、異なるオブジェクトを参照しているので、false
-a == b
-
-// a と b はオブジェクト型で、異なるオブジェクトを参照しているので、false
-a === b
-
-// a と 'foo' は異なる型で、比較前にオブジェクト (a) は
-// 文字列 'foo' に変換されるので、真
-a == 'foo'
- -

仕様書

- - - - - - - - - - - - - - - -
仕様書
{{SpecName('ESDraft', '#sec-equality-operators', 'Equality Operators')}}
{{SpecName('ESDraft', '#sec-relational-operators', 'Relational Operators')}}
- -

ブラウザーの互換性

- - - -

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

- -

関連情報

- - diff --git a/files/ja/web/javascript/reference/operators/logical_operators/index.html b/files/ja/web/javascript/reference/operators/logical_operators/index.html deleted file mode 100644 index 8b43c3de26..0000000000 --- a/files/ja/web/javascript/reference/operators/logical_operators/index.html +++ /dev/null @@ -1,295 +0,0 @@ ---- -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}}
-
- -

関連情報

- - diff --git a/files/ja/web/javascript/reference/operators/special/index.html b/files/ja/web/javascript/reference/operators/special/index.html deleted file mode 100644 index cb220a008d..0000000000 --- a/files/ja/web/javascript/reference/operators/special/index.html +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Special -slug: Web/JavaScript/Reference/Operators/Special ---- -This page was auto-generated because a user created a sub-page to this page. diff --git a/files/ja/web/javascript/reference/operators/special_operators/index.html b/files/ja/web/javascript/reference/operators/special_operators/index.html deleted file mode 100644 index febf3ac3d6..0000000000 --- a/files/ja/web/javascript/reference/operators/special_operators/index.html +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Special Operators -slug: Web/JavaScript/Reference/Operators/Special_Operators ---- -This page was auto-generated because a user created a sub-page to this page. -- cgit v1.2.3-54-g00ecf