34 lines
No EOL
1.4 KiB
Markdown
34 lines
No EOL
1.4 KiB
Markdown
# Ответ по первому равенству
|
||
|
||
Два объекта равны только тогда, когда это один и тот же объект.
|
||
|
||
В первом равенстве создаются два массива, это разные объекты, так что они неравны.
|
||
|
||
# Ответ по второму равенству
|
||
|
||
<ol>
|
||
<li>Первым делом, обе части сравнения вычисляются. Справа находится `![]`. Логическое НЕ `'!'` преобразует аргумент к логическому типу. Массив является объектом, так что это `true`. Значит, правая часть становится `![] = !true = false`. Так что получили:
|
||
|
||
```js
|
||
alert( [] == false );
|
||
```
|
||
|
||
</li>
|
||
<li>Проверка равенства между объектом и примитивом вызывает численное преобразование объекта.
|
||
|
||
У массива нет `valueOf`, сработает `toString` и преобразует массив в список элементов, то есть - в пустую строку:
|
||
|
||
```js
|
||
alert( '' == false );
|
||
```
|
||
|
||
</li>
|
||
<li>Сравнение различных типов вызывает численное преобразование слева и справа:
|
||
|
||
```js
|
||
alert( 0 == 0 );
|
||
```
|
||
|
||
Теперь результат очевиден.
|
||
</li>
|
||
</ol> |