|
@@ -178,6 +178,27 @@ var isYoung = age > 16 && age < 30 // человек молод от 16 до 3
|
|
|
|
|
|
**И**, напротив, "ищет" `false`. То есть, если найден `false`, то нет смысла далее обрабатывать выражение - оно, так или иначе, будет `false`.
|
|
**И**, напротив, "ищет" `false`. То есть, если найден `false`, то нет смысла далее обрабатывать выражение - оно, так или иначе, будет `false`.
|
|
|
|
|
|
|
|
+Учтите, что `||` и `&&` возвращают **не** `true` или `false` (значение булевского типа), а значения подвыражения как оно есть:
|
|
|
|
+Как `false` интерпретируются:
|
|
|
|
+- `false`
|
|
|
|
+- `0` // 0 как число
|
|
|
|
+- `""` //пустая строка
|
|
|
|
+- `null`
|
|
|
|
+- `undefined`
|
|
|
|
+- `NaN`
|
|
|
|
+
|
|
|
|
+Как `true` интерпретируются все остальные значения, в том числе:
|
|
|
|
+- `Infinity`
|
|
|
|
+- `-Infinity`
|
|
|
|
+- `"0"` //строка не пуста. однако +"0" уже 0 как число, а значит false
|
|
|
|
+- `{}` //пустой объект - всё равно `true`
|
|
|
|
+- `[]` //пустой массив `[] == false`, но в остальных случаях работает как true
|
|
|
|
+
|
|
|
|
+**Для проверки используйте** `!!`, двойное отрицание: `!!null` равен `false`, таким образом мы можем почти всегда проверить как интерпретируется
|
|
|
|
+то или иное значение.
|
|
|
|
+
|
|
|
|
+В общем случае объект является `true`, за исключением `null` и `[] == false`
|
|
|
|
+
|
|
Рассмотрим на [примерах](https://jsfiddle.net/qrjarv4m/13/)
|
|
Рассмотрим на [примерах](https://jsfiddle.net/qrjarv4m/13/)
|
|
|
|
|
|
### `if` `else`
|
|
### `if` `else`
|