update
This commit is contained in:
parent
962caebbb7
commit
87bf53d076
1825 changed files with 94929 additions and 0 deletions
|
@ -0,0 +1,34 @@
|
|||
# Ответ по первому равенству
|
||||
|
||||
Два объекта равны только тогда, когда это один и тот же объект.
|
||||
|
||||
В первом равенстве создаются два массива, это разные объекты, так что они неравны.
|
||||
|
||||
# Ответ по второму равенству
|
||||
|
||||
<ol>
|
||||
<li>Первым делом, обе части сравнения вычисляются. Справа находится `![]`. Логическое НЕ `'!'` преобразует аргумент к логическому типу. Массив является объектом, так что это `true`. Значит, правая часть становится `![] = !true = false`. Так что получили:
|
||||
|
||||
```js
|
||||
alert( [] == false );
|
||||
```
|
||||
|
||||
</li>
|
||||
<li>Проверка равенства между объектом и примитивом вызывает численное преобразование объекта.
|
||||
|
||||
У массива нет `valueOf`, сработает `toString` и преобразует массив в список элементов, то есть - в пустую строку:
|
||||
|
||||
```js
|
||||
alert( '' == false );
|
||||
```
|
||||
|
||||
</li>
|
||||
<li>Сравнение различных типов вызывает численное преобразование слева и справа:
|
||||
|
||||
```js
|
||||
alert( 0 == 0 );
|
||||
```
|
||||
|
||||
Теперь результат очевиден.
|
||||
</li>
|
||||
</ol>
|
|
@ -0,0 +1,13 @@
|
|||
# Почему [] == [] неверно, а [ ] == ![ ] верно?
|
||||
|
||||
[importance 5]
|
||||
|
||||
Почему первое равенство -- неверно, а второе -- верно?
|
||||
|
||||
```js
|
||||
//+ run
|
||||
alert( [] == [] ); // false
|
||||
alert( [] == ![] ); // true
|
||||
```
|
||||
|
||||
Какие преобразования происходят при вычислении?
|
Loading…
Add table
Add a link
Reference in a new issue