Может ли кто-нибудь описать картину выше? Это скриншот моей консоли разработчика Chrome.
Из-за принуждения 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
массивы по умолчанию принудительно привязаны к строкам, просто соединяя все значения с запятыми (,) между ними.
[].toString()
?[] == []
возвращает false?