Skip to content

Commit 150d92f

Browse files
committed
renovations
1 parent 0e9ceb2 commit 150d92f

File tree

47 files changed

+288
-108
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+288
-108
lines changed

1-js/2-first-steps/11-uibasic/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ alert('Вам ' + years + ' лет!')
5151
```
5252

5353
[warn header="Всегда указывайте `default`"]
54-
Вообще, второй `default` может отсутствовать. Однако при этом IE вставит в диалог значение по умолчанию `"undefined"`.
54+
Второй параметр может отсутствовать. Однако при этом IE вставит в диалог значение по умолчанию `"undefined"`.
5555

5656
Запустите этот код <u>в IE</u>, чтобы понять о чем речь:
5757

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
Ответ: `3`.
2+
3+
```js
4+
//+ run
5+
alert( null || 2 && 3 || 4 );
6+
```
7+
8+
Приоритет оператора `&&` выше, чем `||`, поэтому он выполнится первым.
9+
10+
Последовательность вычислений:
11+
```
12+
null || 2 && 3 || 4
13+
null || 3 || 4
14+
3
15+
```
16+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Что выведет этот код?
2+
3+
[importance 5]
4+
5+
Что выведет код ниже?
6+
7+
```js
8+
alert( null || 2 && 3 || 4 );
9+
```
10+

1-js/2-first-steps/13-logical-ops/article.md

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ if (hour < 10 || hour > 18 || isWeekend) {
6161

6262
## Короткий цикл вычислений
6363

64+
6465
JavaScript вычисляет несколько ИЛИ слева направо. При этом, чтобы экономить ресурсы, используется так называемый *"короткий цикл вычисления"*.
6566

6667
Допустим, вычисляются несколько ИЛИ подряд: `a || b || c || ...`. Если первый аргумент -- `true`, то результат заведомо будет `true` (хотя бы одно из значений -- `true`), и остальные значения игнорируются.
@@ -91,6 +92,11 @@ alert(x); // 1
9192

9293
## Значение ИЛИ
9394

95+
[quote author="Илья Канатов, участник курса JavaScript"]
96+
`||` запинается на "правде",<br>
97+
`&&` запинается на "лжи".
98+
[/quote]
99+
94100
Итак, как мы видим, оператор ИЛИ вычисляет ровно столько значений, сколько необходимо -- до первого `true`.
95101

96102
При этом оператор ИЛИ возвращает то значение, на котором остановились вычисления. Причём, не преобразованное к логическому типу.
@@ -129,9 +135,9 @@ alert( result ); // выведет "Привет!" - первое значени
129135
alert( undefined || '' || false || 0 ); // 0
130136
```
131137

132-
[summary]
133138
Итак, оператор `||` вычисляет операнды слева направо до первого "истинного" и возвращает его, а если все ложные -- то последнее значение.
134-
[/summary]
139+
140+
Иначе можно сказать, что "`||` запинается на правде".
135141

136142
## && (И)
137143

@@ -201,9 +207,9 @@ alert( 1 && 2 && null && 3 ); // null
201207
alert( 1 && 2 && 3 ); // 3
202208
```
203209

204-
[summary]
205210
Итак, оператор `&&` вычисляет операнды слева направо до первого "ложного" и возвращает его, а если все истинные -- то последнее значение.
206-
[/summary]
211+
212+
Иначе можно сказать, что "`&&` запинается на лжи".
207213

208214
[smart header="Приоритет у `&&` больше, чем у `||`"]
209215
Приоритет оператора И `&&` больше, чем ИЛИ `||`, так что он выполняется раньше.
@@ -262,15 +268,15 @@ var result = !value;
262268

263269
```js
264270
//+ run
265-
alert(!true) // false
266-
alert(!0) // true
271+
alert( !true ); // false
272+
alert( !0 ); // true
267273
```
268274

269275
**В частности, двойное НЕ используются для преобразования значений к логическому типу:**
270276

271277
```js
272278
//+ run
273-
alert(!!"строка") // true
274-
alert(!!null) // false
279+
alert( !!"строка" ); // true
280+
alert( !!null ); // false
275281
```
276282

0 commit comments

Comments
 (0)