明示的に呼び出されたString
コンストラクタと暗黙的な文字列を比較するとtrue
と評価されますが、new
キーワードを追加すると深い等価でfalse
が評価されますが、再び浅い等価でtrue
と評価されますか?これはなぜ偽と評価されますか?
> "hello"===String("hello")
true
> "hello"==new String("hello")
true
> "hello"===new String("hello")
false
編集:さらにテストの後、これは暗黙のコンストラクタを持っているすべてのタイプで発生するように見えます。
編集2:明確にする、これは==
対===
の問題ではなく、明示的なコンストラクタ対暗黙的の一つ。
'' hello "' '' string''、 '' hello ")' 'オブジェクト ''のようになります。 – Biffen
' == '値(' '4" == 4 > true')しかし '==='は型もチェックします。 ( '' 4 "=== 4> false')を返します。 –
@ ibrahimmahrir:どちらもタイプをチェックします。 '=='は型が同じでないと判明した場合に型強制アルゴリズムに入ります。 '=='が値だけをチェックした場合、 '4 ==" 4 "'は 'false'になります。 –