Являются ли массивы и объекты с числовыми свойствами равными в JavaScript?

Может кто-нибудь объяснить мне, почему следующее верно:

let foo = { 
    A: [ 1, 2 ] 
}
let bar = {
   "A": {
      "0": "1",
      "1": "2"
   }
}
assert.deepEqual(foo, bar);

1 ответ

Решение

Как сказано в документации:

Рассматриваются только перечисляемые "собственные" свойства. assert.deepEqual() реализация не проверяет [[Prototype]] объектов или перечислимого собственного Symbol свойства. Для таких проверок рассмотрите возможность использования assert.deepStrictEqual() вместо.

assert.deepStrictEqual() функция тоже проверяет прототип, и

assert.deepStrictEqual(foo, bar);

вернет ложь.

Другие вопросы по тегам