22

私はJavaScriptの比較演算子の違いを理解しようとしてきました:アイデンティティと平等。私が読んだことから、==を使用して2つのオブジェクトの同等性をチェックすると、JavaScriptはそれらが同じタイプであるかどうかを判断し、そうでない場合は同じタイプにしようとします。ただし、===は同じように動作しません。例として:

var n = "1";
console.log(n==1);        // outputs true
console.log(n===1);       // outputs false

では、これらの「アイデンティティ」演算子と通常の等式演算子の違いは何ですか?両方を持つことの利点は何ですか?

パフォーマンスに違いはありますか?変換を行わないので、恒等演算子の方が速いと思います。

また、配列などのより複雑なオブジェクトに関しては、これらはどのように異なりますか?最も重要なことは、一方を他方よりも使用する必要がある場合について、規則は何を示しているのでしょうか。

4

4 に答える 4

33

等価演算子は、比較を行う前にデータ型を同じにしようとします。一方、ID 演算子では、前提条件として両方のデータ型が同じである必要があります。

この質問に似た他の投稿がかなりあります。見る:

PHP の等号 (== double equals) と同一性 (=== triple equals) の比較演算子はどのように異なりますか? (素敵な比較表が
あります) JavaScript の比較では、どの等号演算子 (== と ===) を使用する必要がありますか?

実際には、ブール値が true または false であることを確認したい場合は、アイデンティティ演算子が非常に便利です...

1 == true     => true
true == true  => true
1 === true    => false
true === true => true
于 2011-03-27T03:49:57.823 に答える
17

違いは、==、<=、>=、および != は型強制を行うことです。たとえば、文字列を強制的に数値として評価します。===、<==、>==、および !== は型強制を行いません。文字列と数値を比較します。文字列 "1" は数値 1 と同じではないため、結果は false になります。

リファレンスはこちら:
https://developer.mozilla.org/en/JavaScript/Reference/Operators/Comparison_Operators

于 2011-03-27T03:44:37.153 に答える