Почему пустой массив равен пустой строке, а не другому пустому массиву в javascript? [Дубликат]

1

Изображение 174551

Может ли кто-нибудь описать картину выше? Это скриншот моей консоли разработчика Chrome.

  • 3
    Подсказка: что возвращает [].toString() ?
  • 0
    Тогда почему [] == [] возвращает false?
Показать ещё 7 комментариев
Теги:

1 ответ

4
Лучший ответ

Из-за принуждения JavaScript.

[] свободно приравнивается к "" и, таким образом, принуждается к string используя [].toString() которая равна "".

И почему [] == [] and [] === [] возвращает false:

== и === правила сравнения, если вы сравниваете два не примитивных значения, например объекты (включая функцию и массив). Поскольку эти значения фактически хранятся по ссылке, сравнения == и === будут просто проверять, соответствуют ли ссылки, а не о базовых значениях.

var a = [1,2,3];
var b = [1,2,3];

var c = "1,2,3";

a == c;     // true
b == c;     // true
a == b;     // false

массивы по умолчанию принудительно привязаны к строкам, просто соединяя все значения с запятыми (,) между ними.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню