renovations
This commit is contained in:
parent
a5e8c1219f
commit
41f07253d3
21 changed files with 536 additions and 126 deletions
|
@ -128,15 +128,16 @@ alert( +"2" > +"14" ); // false, теперь правильно
|
|||
|
||||
## Сравнение разных типов
|
||||
|
||||
При сравнении значения преобразуются к числам. Исключение: когда оба значения -- строки, тогда не преобразуются.
|
||||
При сравнении значений разных типов, используется числовое преобразование. Оно применяется к обоим значениям.
|
||||
|
||||
Например:
|
||||
|
||||
```js
|
||||
//+ run
|
||||
alert( '2' > 1 ); // true
|
||||
alert( '01' == 1 ); //true
|
||||
alert( false == 0 ); // true, false становится 0, а true 1.
|
||||
alert( '2' > 1 ); // true, сравнивается как 2 > 1
|
||||
alert( '01' == 1 ); // true, сравнивается как 1 == 1
|
||||
alert( false == 0 ); // true, false становится числом 0
|
||||
alert( true == 1); // true, так как true становится числом 1.
|
||||
```
|
||||
|
||||
Тема преобразований типов будет продолжена далее, в главе [](/types-conversion).
|
||||
|
@ -177,12 +178,14 @@ alert(0 === false); // false, т.к. типы различны
|
|||
|
||||
Проблемы со специальными значениями возможны, когда к переменной применяется операция сравнения `> < <= >=`, а у неё может быть как численное значение, так и `null/undefined`.
|
||||
|
||||
**Интуитивно кажется, что `null/undefined` эквивалентны нулю, но это не так! Они ведут себя по-другому.**
|
||||
**Интуитивно кажется, что `null/undefined` эквивалентны нулю, но это не так.**
|
||||
|
||||
Они ведут себя по-другому.
|
||||
|
||||
<ol>
|
||||
<li>**Значения `null` и `undefined` равны `==` друг другу и не равны чему бы то ни было ещё.**
|
||||
<li>Значения `null` и `undefined` равны `==` друг другу и не равны чему бы то ни было ещё.
|
||||
Это жёсткое правило буквально прописано в спецификации языка.</li>
|
||||
<li>**При преобразовании в число `null` становится `0`, а `undefined` становится `NaN`.**</li>
|
||||
<li>При преобразовании в число `null` становится `0`, а `undefined` становится `NaN`.</li>
|
||||
</ol>
|
||||
|
||||
Посмотрим забавные следствия.
|
||||
|
@ -240,4 +243,6 @@ alert(undefined == 0); // false (3)
|
|||
<li>Строки сравниваются побуквенно.</li>
|
||||
<li>Значения разных типов приводятся к числу при сравнении, за исключением строгого равенства `===` (`!==`).</li>
|
||||
<li>Значения `null` и `undefined` равны `==` друг другу и не равны ничему другому. В других сравнениях (с участием `>`,`<`) их лучше не использовать, так как они ведут себя не как `0`.</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
Мы ещё вернёмся к теме сравнения позже, когда лучше изучим различные типы данных в JavaScript.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue