Являются ли массивы и объекты с числовыми свойствами равными в 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);
вернет ложь.