8

JS のすべてはオブジェクトです。私はいつもそれを知っていました、そして私はそれを完全に理解しています。私は理由を知ってい{} !== {}ます。2 つの異なるオブジェクトです。を書き出すのと同じですnew Object() == new Object()

その他の例:

{} == {} // => false
[] == [] // => false
/ / == / / // => false
new String() == new String() // => false

しかし、文字列もオブジェクトです (それが、文字列を実行し''.replace()て拡張できる理由です)。

'' == '' // => true

これが機能しない場合、2 つの文字列を比較するのは明らかに頭の痛い問題ですが、これは言語の残りの部分と矛盾しているようです。内部では、何が起こっているのですか?これは 1 回限りのものですか、それとも別のコンセプトがあるのでしょうか。

4

3 に答える 3

4

JavaScript は基本的に、文字列と数値を常にスカラーとして扱い、メソッドが呼び出されたときにそれらをオブジェクトに変換し、後で明示的に宣言していない場合は元に戻します。new String("");

数字も同じ。

文字列/数値/ブール値の等価性がなければ、多くのことを行うのに苦労します。

于 2013-05-21T23:46:21.600 に答える