比較演算子

比較演算子は 2 つのオペランドの値を比較し、 構成するステートメントは true または false です。次の例では 厳密な等価演算子(===): 2 つのオペランドを比較します: 2 + 2、値 4。式の結果と数値は 値 4 が同じ場合、次の式は true と評価されます。

2 + 2 === 4
> true

型強制と等式

最も頻繁に使用される 2 つの比較演算子は、疎等価の == です。 厳密な等式の場合は === を指定します。== は 2 つの大まかな比較を行います。 可能な場合、オペランドが一致するデータ型に強制変換されます。対象 たとえば、比較が行われている場合でも、2 == "2"true を返します。 数値と文字列値の中間です

2 == 2
> true

2 == "2"
> true

!= についても同様です。これは、対象となるオペランドの場合にのみ true を返します。 大まかには異なります。

2 != 3
> true

2 != "2"
> false

=== または !== を使用した厳密な比較では、型強制実行は行われません。1 つの 厳密に比較して true と評価する場合は、比較する値が次の条件を満たしている必要があります。 同じデータ型です。このため、2 == "2"true を返しますが、2 === "2" を返します。 false を返します。

2 === 3
> false

2 === "2"
> false

自動強制型変換によって生じる可能性のあるあいまいさを排除するには、常に === を使用します。 考えています

演算子 説明 用途 結果
=== 完全に等しい 2 === 2 true
!== 厳密に等しくない 2 !== "2" true
== 等しい(または「大まかに等しい」) 2 == 「2」 true
!= 等しくない 2 != "3" true
> 次より大きい 3 >2 true
>= 次の値以上 2 以上 2 true
< 次より小さい 2 <3 個 true
<= 次の値以下 2 <= 3 true

Truthy と falsy

JavaScript のすべての値は暗黙的に true または false であり、次のように強制変換できます。 対応するブール値を返します。たとえば、 比較できます。限定された値のセットは false に強制変換されます。

  • 0
  • null
  • undefined
  • NaN
  • 空の文字列(""

1 つ以上の値を含む文字列など、他のすべての値は true に強制変換されます。 ゼロ以外の文字が含まれています。これらは一般に「真実」と呼ばれおよび 「falsy」使用できます。

"My string" == true
> true

100 == true
> true

0 == true
> false

論理演算子

論理演算子 AND(&&)、OR(||)、NOT(!)を使用して、2 つ以上の条件文の評価に基づいてスクリプトのフローを制御します。


2 === 3 || 5 === 5;
> true

2 === 2 && 2 === "2"
> false

2 === 2 && !"My string."
> false

論理 NOT(!)式は、オペランドの true または falsy の値を否定します。オペランドが false と評価された場合は true、オペランドが true と評価された場合は false と評価されます。


true
> true

!true
> false

!false
> true

論理否定演算子(!)を別のデータ型(例: 数値または文字列の場合、その値をブール値に強制変換して、true または 虚偽の値を返します。

"string"
> "string"

!"string"
> false

0
> 0

!0
> true

通常は、2 つの NOT 演算子を使用して、データを目的の値にすばやく変換 一致するブール値:

!!"string"
> true

!!0
> false

AND 論理演算子と OR 論理演算子は、単独で強制変換を実行しません。。 選択された 2 つのオペランドのいずれかの値を返します。 オペランドの値を返します。

論理 AND(&&)は、そのオペランドが 2 つのオペランドのうち 1 つ目のオペランドである場合にのみ返します は false と評価されます。それ以外の場合は、第 2 オペランドが評価されます。比較対象として ブール値に評価され、両辺のオペランドが正の場合にのみ true を返します の論理 AND は、true と評価されます。どちらか一方が false と評価された場合、 false を返します。

true && false
> false

false && true
> false

false && false
> false

true && true
> true

&& を 2 つの非ブール値オペランドとともに使用すると、最初のオペランドが返されます false に強制変換できる場合は、変更されません。第 1 オペランドを強制変換できる場合 true に代入すると、第 2 オペランドは変更されずに返されます。

false && "My string"
> false

null && "My string"
> null

"My string" && false
> false

"My string" && "My second string"
> "My second string"

2 === 2 && "My string"
> "My string"

論理 OR(||)は、そのオペランドが 2 つのオペランドのうち 1 つ目のオペランドである場合にのみ返します は true と評価されます。それ以外の場合は、第 2 オペランドが評価されます。比較対象として ブール値に評価されます。これは、いずれかのオペランドが場合に true を返すことを意味します。 は true と評価されます。どちらの側も true と評価されなかった場合は返されます。 false:

true || false
> true

false || true
> true

true || true
> true

false || false
> false

ブール以外の 2 つのオペランドで || を使用すると、最初のオペランドが返されます true に強制変換できる場合は、変更されません。第 1 オペランドを強制変換できる場合 false に代入すると、第 2 オペランドは変更されずに返されます。

false || "My string"
> "My string"

null || "My string"
> "My string"

"My string" || false
> "My string"

"My string" || "My second string"
> "My string"

2 === 2 || "My string"
> true

null 値結合演算子

ES2020 で導入されました。 「null 結合演算子」は(??)は、次の場合にのみ最初のオペランドを返します オペランドに null または undefined 以外の値が指定されている。それ以外の場合は次の値を返します。 2 番目のオペランドになります

null ?? "My string"
> "My string"

undefined ?? "My string"
> "My string"

true ?? "My string";
> true

?? は論理 OR に似ていますが、第 1 オペランドのより厳格です 評価します。|| は、対象となる式の第 2 オペランドを返します undefinednull を含めて false に強制変換されました。?? は 2 番目の値を返します。 第 1 オペランドが null または undefined 以外の場合は、オペランド(対象であっても指定可) 次のように false に強制変換できます。

0 ?? "My string";
> 0

false ?? "My string";
> false

undefined ?? "My string";
> "My string"

論理割り当て演算子

代入演算子を使用して、2 番目の演算子の値を最初の演算子に代入する 演算子を使用します。最も一般的な例は、単一等号(=)です。これは、 宣言された変数に値を代入する。

論理代入演算子を使用して、条件付きで変数に値を割り当てる その変数の true または falsy の値に基づいて決定されます。

AND 論理代入(&&=)演算子は、第 2 オペランドを評価します。 は、最初のオペランドが true - 実質的には、「第 1 オペランドが true の場合、 第 2 オペランドを使用します。

let myVariable = false;
myVariable &&= 2 + 2;
> false

myVariable = true;
myVariable &&= 2 + 2;
> 4

第 1 オペランドの true または falsy の値により、 実行されます。しかし、比較を使って第 1 オペランドを評価しようとすると、 演算子の結果は true または false ブール値になりますが、これらのブール値に value:

let myVariable = 5;
myVariable > 2 &&= "My string"
> SyntaxError: Invalid left-hand side in assignment

論理 OR 代入(||=)演算子は、第 2 オペランドを評価します。 第 1 オペランドが false と評価された場合に第 1 オペランドに代入する — 実質的には、「第 1 オペランドが false の場合、 」を使用します。

let myVariable = false;
myVariable ||= 2 + 2;
> 4

myVariable = true;
myVariable ||= 2 + 2;
> true

理解度をチェックする

「完全に等しい」ことを示している演算子はどれですか。

===
==
=
!=