You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Два объекта равны друг другу `==` только в том случае, если они ссылаются на один и тот же объект.
470
+
- Если один из аргументов `==` является объектом, а другой - примитивом, то объект преобразуется в примитив, как описано в главе <info:object-toprimitive>.
471
+
- ...За исключением `null` и `undefined`, которые равны `==` друг другу и ничему больше.
472
+
473
+
Оператор строгого равенства `===` еще проще, так как он не преобразует типы.
474
+
475
+
Итак, если мы всё же сравниваем массивы с помощью `==`, то они никогда не будут одинаковыми, если только мы не сравним две переменные, которые ссылаются на один и тот же массив
476
+
477
+
Например:
478
+
```js run
479
+
alert( [] == [] ); // false
480
+
alert( [0] == [0] ); // false
481
+
```
482
+
483
+
Технически эти массивы являются разным объектами. Так что они не равны. Оператор `==` не выполняет поэлементное сравнение.
484
+
485
+
Сравнение с примитивами также может дать, казалось бы, странные результаты:
486
+
487
+
```js run
488
+
alert( 0== [] ); // true
489
+
alert('0'== [] ); // false
490
+
```
491
+
492
+
Здесь, в обоих случаях, мы сравниваем примитив с объектом массива. Таким образом, массив `[]` преобразуется в примитив с целью сравнения и становится пустой строкой `''`.
493
+
494
+
Затем продолжается процесс сравнения с примитивами, как описано в главе <info:type-conversions>:
495
+
496
+
```js run
497
+
// после того, как [] был преобразован в ''
498
+
alert( 0=='' ); // true, так как '' преобразуется в число 0
499
+
500
+
alert('0'=='' ); // false, нет преобразования типов, разные строки
501
+
```
502
+
503
+
Так как же сравнить массивы?
504
+
505
+
Это просто: не используйте оператор `==`. Вместо этого сравните их поэлементам в цикле или используя методы итерации, описанные в следующей главе.
506
+
507
+
469
508
## Итого
470
509
471
510
Массив – это особый тип объекта, предназначенный для работы с упорядоченным набором элементов.
0 commit comments