比較演算子は 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 オペランドを返します
undefined
と null
を含めて 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
理解度をチェックする
「完全に等しい」ことを示している演算子はどれですか。
!=
=
===
==