[4] === 4 // is: false
[4] == 4 // is: true
'0' == 0 // is: true
'0' === 0 // is: false
誰かがこれの正確な理由を教えてもらえますか?また、厳密な等価演算子は正確に何をするか、または比較のために必要ですか?厳密な(===)演算子では型と値が同じでなければならないことを学びました.これは厳密な等価演算子がチェックするものです.もしそうなら、演算子がどのように機能するかよりも?
[4] === 4 // is: false
[4] == 4 // is: true
'0' == 0 // is: true
'0' === 0 // is: false
誰かがこれの正確な理由を教えてもらえますか?また、厳密な等価演算子は正確に何をするか、または比較のために必要ですか?厳密な(===)演算子では型と値が同じでなければならないことを学びました.これは厳密な等価演算子がチェックするものです.もしそうなら、演算子がどのように機能するかよりも?
==
値を比較する===
値と型を比較する[4] //turns into "4" when comparing
"4" == 4 //They are the same
"4" === 4 //The values are the same, but not the type
参考:http ://es5.github.io/#x11.9.4
オペレーターは、オブジェクトの===
も比較しtype
ます。
だから、[4] === 4
[4] は配列ですが、4 は数値であるため、false と評価されます。
そして'0' === 0
「0」は文字列ですが、0 は数値であるため、false と評価されます。
=== 演算子は型と値の両方を比較し、より厳密なチェックを行います。== 演算子は、より厳密でない値ベースのチェックを実行します。場合によっては、異なるタイプの値が「等しい」と見なされます。そのような例は、0 vs '' または 0 vs "0" です。
== 演算子は 0 と '' を等しいと見なしますが、=== 演算子はそれらが異なる型であるため、それらを等しいとは見なしません。