JavaScript:等式演算子
JavaScriptで同等性を比較する方法は4つあります。この記事では、等式を決定するために使用される一意の演算子、型強制とは何か、JavaScript言語で真または偽の値を評価するときに遭遇するいくつかの特異性について説明します。
厳密な同等性の比較
厳密な等号演算子は、トリプル等号(===)で表されます。この演算子の目的は、値だけでなくその型も比較することです。
const strictComparison = (a, b) => { console.log(typeof a); console.log(typeof b); return a === b; } strictComparison(8, '8'); //false
strictComparison
上記の例の関数は、2つの値を取り込んで、2つの値が厳密に互いに等しいかどうかを返します。
一見すると、値は両方とも値 8
であるため、同じように見えます。 。ただし、厳密な等式演算子は型も調べます。 a
を見ると この場合、を見てください
タイプの
、コード>
‘number’
を返します 。 b
に対して同じことを行う場合 、 typeof b
を使用 、コード>
‘string’
を返します 。
タイプが同じではないため、 false
を返します。 。
===
との異常な比較
JavaScriptのstrictequal演算子を使用して行うことができるいくつかの珍しい比較があります。面接の状況でよく聞かれる質問は次のとおりです。
Operand1 | typeof Operand1 | Operand2 | typeof Operand2 | 戻り値 |
null | オブジェクト | null | オブジェクト | true |
未定義 | 未定義 | 未定義 | 未定義 | true |
null | オブジェクト | 未定義 | 未定義 | false |
NaN | 番号 | NaN | 番号 | false |
false | ブール値 | 「false」 | 文字列 | false |
false | ブール値 | false | ブール値 | true |
“” | 文字列 | “” | 文字列 | true |
“” | 文字列 | 未定義 | 未定義 | false |
注意すべきもう1つのことは、これはデータ構造との比較を行わないということです。配列またはオブジェクトを比較するには、より高度なステートメントを使用する必要があります。
ここのエントリのほとんどは、タイプが一致するか一致しないため、その方法を評価します。唯一の例外はNaN
です –これは false
と評価されます NaN
という事実のため 理論的には何でもかまいません。したがって、それが等しいかどうかはわかりません。したがって、falseと評価されます。
参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。
平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。
厳密な不等式の比較
厳密な不等式演算子は、感嘆符と2つの等号(!==)で表されます。 2つの値の値とタイプが等しくないかどうかを評価します。
const strictInequalityComparison = (a, b) => { console.log(typeof a); console.log(typeof b); return a !== b; } strictInequalityComparison("8", 8); //true
strictInequalityComparison
上記の例の関数は、2つの値を取り込んで、2つの値が厳密に互いに等しくないかどうかを返します。
一見すると、両方の値が同じであるため、値は等しく見えます(等しくないわけではありません)。ただし、厳密な等式演算子と同様に、厳密な不等式演算子も型を調べます。
a
を見ると この場合、 typeof a
を見てください。 、‘string’
を返します 。 b
に対して同じことを行う場合 、 typeof b
を使用 、‘number’
を返します 。タイプが同じではないため、を返します。
true
。
!==
との異常な比較
JavaScriptの厳密な不等式演算子を使用して行うことができるいくつかの珍しい比較があります。面接の状況でよく聞かれる質問は次のとおりです。
Operand1 | typeof Operand1 | Operand2 | typeof Operand2 | 戻り値 |
null | オブジェクト | null | オブジェクト | false |
未定義 | 未定義 | 未定義 | 未定義 | false |
null | オブジェクト | 未定義 | 未定義 | true |
NaN | 番号 | NaN | 番号 | true |
false | ブール値 | 「false」 | 文字列 | true |
false | ブール値 | false | ブール値 | false |
“” | 文字列 | “” | 文字列 | false |
“” | 文字列 | 未定義 | 未定義 | true |
厳密な等式演算子の場合と同様に、オブジェクト間または配列間で比較を行うことはできません。
もう1つ…
JavaScript開発のキャリアにおけるほとんどの状況では、これらの2つの演算子、===と!==が、条件付きロジックを作成するための演算子になります。
緩い等式の比較
緩い等号演算子は、二重等号(==)で表されます。この演算子の目的は、等しいかどうかを評価する前に、両方の値を共通の型に強制変換することです。これは型強制と呼ばれます または型変換 。
const looseComparison = (a, b) => { console.log(typeof a); console.log(typeof b); return a == b; } strictComparison(8, '8'); //true
looseComparison
上記の例の関数は、2つの値を取り込んで、2つの値が互いに大まかに等しいかどうかを返します。
一見すると、1つは数値で、もう1つは文字列であるため、値は同じようには見えません。ただし、ルーズイコリティ演算子は型を調べません。このステートメントは、値を比較する前に型が同じになるように強制しようとします。したがって、2番目のオペランドが数値に変換されてから比較されるため、例はtrueを返します。
==
との異常な比較
JavaScriptのstrictequal演算子を使用して行うことができるいくつかの珍しい比較があります。面接の状況でよく聞かれる質問は次のとおりです。
Operand1 | typeof Operand1 | Operand2 | typeof Operand2 | 戻り値 |
null | オブジェクト | null | オブジェクト | true |
未定義 | 未定義 | 未定義 | 未定義 | true |
null | オブジェクト | 未定義 | 未定義 | true |
NaN | 番号 | NaN | 番号 | false |
false | ブール値 | 「false」 | 文字列 | false |
false | ブール値 | false | ブール値 | true |
“” | 文字列 | “” | 文字列 | true |
“” | 文字列 | 未定義 | 未定義 | false |
ここでのエントリのほとんどは、厳密な等式に関する最初のセクションで行ったのと同じように評価されます。注目すべき例外は、 null および未定義 大まかに比較すると、trueと評価されます。
緩い不等式の比較
緩い不等式演算子は、感嘆符と1つの等号(!=)で表されます。 2つの値が値だけで等しくないかどうかを評価します。これは、両方の引数を同じ型に変換しようとすることによって行われます。
const looseInequalityComparison = (a, b) => { console.log(typeof a); console.log(typeof b); return a != b; } looseInequalityComparison("8", 8); //false
looseInequalityComparison
上記の例の関数は、2つの値を取り込んで、2つの値が互いに大まかに等しくないかどうかを返します。
一見、値は同じであるため、同じように見えます。ただし、緩い不等式演算子は、緩い等式演算子と同様に、比較の前に両方のオペランドで型が同じになるように強制します。強制後の値は同じであるため、 false
を返します。 。
!=
との異常な比較
JavaScriptの緩い不等式演算子を使用して行うことができるいくつかの珍しい比較があります。面接の状況でよく聞かれる質問は次のとおりです。
Operand1 | typeof Operand1 | Operand2 | typeof Operand2 | 戻り値 |
null | オブジェクト | null | オブジェクト | false |
未定義 | 未定義 | 未定義 | 未定義 | false |
null | オブジェクト | 未定義 | 未定義 | false |
NaN | 番号 | NaN | 番号 | true |
false | ブール値 | 「false」 | 文字列 | true |
false | ブール値 | false | ブール値 | false |
“” | 文字列 | “” | 文字列 | false |
“” | 文字列 | 未定義 | 未定義 | true |
厳密な等式演算子の場合と同様に、オブジェクト間または配列間で比較を行うことはできません。
ここでのエントリのほとんどは、厳密な不等式に関する2番目のセクションで行ったのと同じように評価されます。注目すべき例外は、 null および未定義 大まかに比較すると、falseと評価されます。
結論
この記事では、JavaScriptで同等性を比較する4つの方法について説明しました。覚えておくべき主なことは、トリプルイコール(===)とダブルイコール(==)は同じ演算子ではないということです。 1つはタイプと値を厳密に評価し、もう1つは両方を同じタイプに強制しようとした後にのみ値を評価します。
-
JavaScriptの緩い平等
緩い等式演算子「==」を使用すると、最初に値を共通の型に変換してから、それらの間の等式をチェックすることにより、2つ以上のオペランドを比較できます。 以下は、JavaScriptで緩い等式を実装するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-sc
-
JavaScriptで誤った値を特定する
JavaScriptでは、ブール型-false として評価されると、次の値がfalseと評価されます。 0 空の文字列: 、、または `` null 未定義 NaN —数値ではありません 以下は、JavaScriptで偽の値を識別するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="widt