update docs, add object
This commit is contained in:
@@ -11,7 +11,7 @@ sidebar_position: 6
|
||||
***Несколько условий: «else if»***
|
||||
|
||||
## Конструкция "switch"
|
||||
```
|
||||
```js
|
||||
let a = 2 + 2;
|
||||
|
||||
switch (a) {
|
||||
@@ -29,7 +29,7 @@ switch (a) {
|
||||
}
|
||||
```
|
||||
## Условный оператор „?“ (тернарный)
|
||||
```
|
||||
```js
|
||||
let result = условие ? значение1 : значение2;
|
||||
```
|
||||
## Логические операторы
|
||||
@@ -45,14 +45,14 @@ let result = условие ? значение1 : значение2;
|
||||
- ??= (Оператор нулевого присваивания)
|
||||
|
||||
### || (ИЛИ)
|
||||
```
|
||||
```js
|
||||
( true || true ); // true
|
||||
( false || true ); // true
|
||||
( true || false ); // true
|
||||
( false || false ); // false
|
||||
```
|
||||
### ИЛИ "||" находит первое истинное значение
|
||||
```
|
||||
```js
|
||||
( 1 || 0 ); // 1 (1 - истинное значение)
|
||||
( true || 'какая-то строка' ); // true
|
||||
( null || 1 ); // 1 (первое истинное значение)
|
||||
@@ -61,7 +61,7 @@ let result = условие ? значение1 : значение2;
|
||||
```
|
||||
|
||||
### ||= (Логическое присваивание ИЛИ)
|
||||
```
|
||||
```js
|
||||
a ||= b;
|
||||
```
|
||||
Оператор **||=** принимает два операнда и выполняет следующие действия:
|
||||
@@ -71,14 +71,14 @@ a ||= b;
|
||||
- Если ***a*** ложно, присваивает ***a*** значение ***b***.
|
||||
|
||||
### && (И)
|
||||
```
|
||||
```js
|
||||
( true && true ); // true
|
||||
( false && true ); // false
|
||||
( true && false ); // false
|
||||
( false && false ); // false
|
||||
```
|
||||
#### И «&&» находит первое ложное значение
|
||||
```
|
||||
```js
|
||||
result = value1 && value2 && value3;
|
||||
```
|
||||
Оператор **&&** выполняет следующие действия:
|
||||
@@ -103,7 +103,7 @@ result = value1 && value2 && value3;
|
||||
Несмотря на то, что вариант с && кажется более коротким, if более нагляден и, как правило, более читабелен.
|
||||
|
||||
### &&= (Логическое присваивание И)
|
||||
```
|
||||
```js
|
||||
a &&= b;
|
||||
```
|
||||
Принцип действия **&&=** практически такой же, как и у оператора логического присваивания **ИЛИ ||=**. \
|
||||
@@ -112,7 +112,7 @@ a &&= b;
|
||||
|
||||
### ! (НЕ)
|
||||
|
||||
```
|
||||
```js
|
||||
result = !value;
|
||||
```
|
||||
|
||||
@@ -146,19 +146,19 @@ result = !value;
|
||||
|
||||
По соображениям безопасности JavaScript запрещает использование оператора **??** вместе с **&&** и **||**, если
|
||||
приоритет явно не указан при помощи круглых скобок.
|
||||
```
|
||||
```js
|
||||
let x = 1 && 2 ?? 3; // Синтаксическая ошибка
|
||||
```
|
||||
|
||||
Используйте скобки, чтобы обойти это ограничение:
|
||||
```
|
||||
```js
|
||||
let x = (1 && 2) ?? 3; // Работает без ошибок
|
||||
```
|
||||
### Оператор нулевого присваивания (??=)
|
||||
|
||||
Предположим, нам необходимо проверить, равна ли переменная null или undefined, и если это так — присвоить этой
|
||||
переменной какое-либо другое значение.
|
||||
```
|
||||
```js
|
||||
let userAge = null;
|
||||
|
||||
if (userAge === null || userAge === undefined) {
|
||||
@@ -167,10 +167,12 @@ if (userAge === null || userAge === undefined) {
|
||||
```
|
||||
|
||||
Выглядит громоздко, правда? Существует оператор, более подходящий для подобных задач.
|
||||
```x ??= y```
|
||||
```js
|
||||
x ??= y
|
||||
```
|
||||
|
||||
Оператор **??=** присвоит **x** значение **y** только в том случае, если **x** не определено (null/undefined).
|
||||
```
|
||||
```js
|
||||
let userAge = null;
|
||||
userAge ??= 18;
|
||||
alert(userAge) // 18
|
||||
|
||||
Reference in New Issue
Block a user