ホームページ  >  に質問  >  本文

javascript - [1] == [1] これは偽ですか、それとも真ですか?

[1] == [1] 出力された値の数が false になっています。理由を知っている人はいますか?

伊谢尔伦伊谢尔伦2710日前1970

全員に返信(6)返信します

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-19 10:46:27

    比較演算子の間の等価演算子について詳しく紹介します:

    等しい(==)

    比較演算子は 2 つの異なるタイプのオペランドを変換し、厳密な比較を実行します。両方のオペランドがオブジェクトである場合、JavaScript はそれらの内部参照を比較し、それらの参照がメモリ内の同じオブジェクト (領域) を指している場合、つまりスタック メモリ内のそれらの参照アドレスが同じ場合に限り、等しいと判断します。

    上記の内容はすべて正しいです。[1] == [1] では、2 つの配列は異なるオブジェクトであるため、等しくありません。

    返事
    0
  • 怪我咯

    怪我咯2017-05-19 10:46:27

    JavaScript中,数组是Object
    这一语句通过字面量创建了两个Array、それらは異なるオブジェクトであるため、同等ではありません。

    返事
    0
  • 阿神

    阿神2017-05-19 10:46:27

    2 配列オブジェクトは同じオブジェクトではありません。

    返事
    0
  • PHP中文网

    PHP中文网2017-05-19 10:46:27

    比較する値が基準値の場合、2つの値がメモリ内の同じオブジェクトかどうかを比較します。ここでの[1]と[1]は異なるため、偽となります

    返事
    0
  • 習慣沉默

    習慣沉默2017-05-19 10:46:27

    Ecma-262.pdf
    7.2.13 抽象的等価性比較
    すでに明確に証明されており、ここの [1] = [1] 实际是 [1] === [1] 正好试用第一条。


    比較 x == y (x と y は値) は true または false を生成します。このような比較は次のように実行されます:

    1. Type(x) が Type(y) と同じ場合、 a.厳密な等価比較 x === y を実行した結果を返します

    2. x が null で y が未定義の場合、true を返します。

    3. x が未定義で y が null の場合、true を返します。

    4. Type(x) が Number で、Type(y) が String の場合、比較の結果 x == ToNumber(y) を返します。

    5. Type(x) が String で、Type(y) が Number の場合、比較の結果 ToNumber(x) == y を返します。

      Type(x) が Boolean の場合、比較の結果 ToNumber(x) == y を返します。
    6. Type(y) が Boolean の場合、比較の結果 x == ToNumber(y) を返します。
    7. Type(x) が String、Number、Symbol のいずれかで、Type(y) が Object の場合、比較の結果 x ==
    8. ToPrimitive(y) を返します。

    9. Type(x) が Object で、Type(y) が String、Number、または Symbol の場合、比較の結果 ToPrimitive(x) を返します
    10. == y.

    11. false を返します。
    12. 返事
      0
  • 伊谢尔伦

    伊谢尔伦2017-05-19 10:46:27

    オブジェクトタイプはメモリアドレスを比較します。アドレスが異なるため、falseになります。

    返事
    0
  • キャンセル返事