Skip to content

Commit 5095fb2

Browse files
committed
fixes
1 parent 3070037 commit 5095fb2

File tree

11 files changed

+50
-59
lines changed

11 files changed

+50
-59
lines changed

1-js/1-getting-started/4-devtools/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Консоль разработчика
22

3-
При разработке скриптов всегда возможны ошибки... Впрочем, что я говорю? У вас абсолютно точно будут ошибки, если конечно вы -- человек, а не <a href="http://ru.wikipedia.org/wiki/%D0%91%D0%B5%D0%BD%D0%B4%D0%B5%D1%80_(%D0%A4%D1%83%D1%82%D1%83%D1%80%D0%B0%D0%BC%D0%B0)">робот</a>.
3+
При разработке скриптов всегда возможны ошибки... Впрочем, что я говорю? У вас абсолютно точно будут ошибки, если конечно вы -- человек, а не [робот](http://ru.wikipedia.org/wiki/%D0%91%D0%B5%D0%BD%D0%B4%D0%B5%D1%80_(%D0%A4%D1%83%D1%82%D1%83%D1%80%D0%B0%D0%BC%D0%B0)).
44

55
Чтобы читать их в удобном виде, а также получать массу полезной информации о выполнении скриптов, в браузерах есть *инструменты разработки*.
66

1-js/2-first-steps/18-function-declaration-expression/article.md

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -178,11 +178,18 @@ sayHi();
178178

179179
### Анонимные функции
180180

181-
Взглянем ещё на один пример.
181+
Взглянем ещё на один пример -- функцию `ask(question, yes, no)` с тремя параметрами:
182182

183-
Функция `ask(question, yes, no)` предназначена для выбора действия в зависимости от результата `f`.
183+
`question`
184+
: Строка-вопрос
184185

185-
Она выводит вопрос на подтверждение `question` и, в зависимости от согласия пользователя, вызывает `yes` или `no`:
186+
`yes`
187+
: Функция
188+
189+
`no`
190+
: Функция
191+
192+
Она выводит вопрос на подтверждение `question` и, в зависимости от согласия пользователя, вызывает функцию `yes()` или `no()`:
186193

187194
```js run
188195
*!*
@@ -206,9 +213,9 @@ ask("Вы согласны?", showOk, showCancel);
206213

207214
Какой-то очень простой код, не правда ли? Зачем, вообще, может понадобиться такая `ask`?
208215

209-
...Но при работе со страницей такие функции как раз очень востребованы, только вот спрашивают они не простым `confirm`, а выводят более красивое окно с вопросом и могут интеллектуально обработать ввод посетителя. Но это всё в своё время.
216+
...Оказывается, при работе со страницей такие функции как раз очень востребованы, только вот спрашивают они не простым `confirm`, а выводят более красивое окно с вопросом и могут интеллектуально обработать ввод посетителя. Но это всё потом, когда перейдём к работе с интерфейсом.
210217

211-
Здесь обратим внимание на то, что то же самое можно написать более коротко:
218+
Здесь же обратим внимание на то, что то же самое можно написать более коротко:
212219

213220
```js run no-beautify
214221
function ask(question, yes, no) {

1-js/2-first-steps/8-operators/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ alert( 8 % 3 ); // 2, остаток от деления 8 на 3
195195
alert( 6 % 3 ); // 0, остаток от деления 6 на 3
196196
```
197197

198-
## Инкремент/декремент: ++, --
198+
## Инкремент/декремент: `++`, `--`
199199

200200
Одной из наиболее частых операций в JavaScript, как и во многих других языках программирования, является увеличение или уменьшение переменной на единицу.
201201

1-js/4-data-structures/2-number/article.md

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ alert( 3e-5 ); // 0.00003 <-- 5 нулей, включая начальный
3636

3737
Как правило, ошибка в программе... Во всяком случае, в большинстве языков программирования это именно так.
3838

39-
Но создатель JavaScript решил пойти математически правильным путем. Ведь чем меньше делитель, тем больше результат. При делении на очень-очень маленькое число должно получиться очень большое. В математическом анализе это описывается через [пределы](http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D0%B4%D0%B5%D0%BB_(%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0&#041;), и если подразумевать предел, то в качестве результата деления на `0` мы получаем "бесконечность", которая обозначается символом `` или, в JavaScript: `"Infinity"`.
39+
Но создатель JavaScript решил пойти математически правильным путем. Ведь чем меньше делитель, тем больше результат. При делении на очень-очень маленькое число должно получиться очень большое. В математическом анализе это описывается через [пределы](https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D0%B4%D0%B5%D0%BB_(%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)), и если подразумевать предел, то в качестве результата деления на `0` мы получаем "бесконечность", которая обозначается символом `` или, в JavaScript: `"Infinity"`.
4040

4141
```js run
4242
alert( 1 / 0 ); // Infinity
@@ -96,17 +96,6 @@ alert( 0 / 0 ); // NaN
9696
alert( isNaN("12") ); // false, строка преобразовалась к обычному числу 12
9797
```
9898

99-
````smart header="Забавный способ проверки на `NaN`"
100-
Отсюда вытекает забавный способ проверки значения на `NaN`: можно проверить значение на равенство самому себе, если не равно -- то `NaN`:
101-
102-
```js run
103-
var n = 0 / 0;
104-
105-
if (n !== n) alert( 'n = NaN!' );
106-
```
107-
108-
Это работает, но для наглядности лучше использовать `isNaN(n)`.
109-
````
11099
- Значение `NaN` "прилипчиво". Любая операция с `NaN` возвращает `NaN`.
111100

112101
```js run
@@ -115,6 +104,21 @@ alert( 0 / 0 ); // NaN
115104

116105
Если аргумент `isNaN` -- не число, то он автоматически преобразуется к числу.
117106

107+
108+
````smart header="Забавный способ проверки на `NaN`"
109+
110+
Отсюда вытекает забавный способ проверки значения на `NaN`: можно проверить значение на равенство самому себе, если не равно -- то `NaN`:
111+
112+
```js run
113+
var n = 0 / 0;
114+
115+
if (n !== n) alert( 'n = NaN!' );
116+
```
117+
118+
Это работает, но для наглядности лучше использовать `isNaN(n)`.
119+
````
120+
121+
118122
```smart header="Математические операции в JS безопасны"
119123
Никакие математические операции в JavaScript не могут привести к ошибке или "обрушить" программу.
120124

1-js/5-functions-closures/2-closures/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ alert( counter() ); // 5
366366

367367
## Итого: замыкания
368368

369-
[Замыкание](http://en.wikipedia.org/wiki/Closure_(computer_science&#041;) -- это функция вместе со всеми внешними переменными, которые ей доступны.
369+
[Замыкание](http://en.wikipedia.org/wiki/Closure_(computer_science)) -- это функция вместе со всеми внешними переменными, которые ей доступны.
370370

371371
Таково стандартное определение, которое есть в Wikipedia и большинстве серьёзных источников по программированию. То есть, замыкание -- это функция + внешние переменные.
372372

1-js/5-functions-closures/6-memory-management/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
Эти значения гарантированно хранятся в памяти. Мы будем называть их *корнями*.
1919
2. **Любое другое значение сохраняется в памяти лишь до тех пор, пока доступно из корня по ссылке или цепочке ссылок.**
2020

21-
Для очистки памяти от недостижимых значений в браузерах используется автоматический <a href="http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)">Сборщик мусора</a> (англ. Garbage collection, GC), встроенный в интерпретатор, который наблюдает за объектами и время от времени удаляет недостижимые.
21+
Для очистки памяти от недостижимых значений в браузерах используется автоматический [Сборщик мусора](https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)) (англ. Garbage collection, GC), встроенный в интерпретатор, который наблюдает за объектами и время от времени удаляет недостижимые.
2222

2323
Самая простая ситуация здесь с примитивами. При присвоении они копируются целиком, ссылок на них не создаётся, так что если в переменной была одна строка, а её заменили на другую, то предыдущую можно смело выбросить.
2424

1-js/8-oop/1-about-oop/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ vasya.sayHi(); // пользователь умеет говорить "Прив
3434
Здесь мы видим ярко выраженную сущность -- `User` (посетитель). Используя терминологию ООП, такие конструкторы часто называют *классами*, то есть можно сказать "класс `User`".
3535

3636
```smart header="Класс в ООП"
37-
[Классом]("https://en.wikipedia.org/wiki/Class_(computer_programming)") в объектно-ориентированной разработке называют шаблон/программный код, предназначенный для создания объектов и методов.
37+
[Классом](https://en.wikipedia.org/wiki/Class_(computer_programming)) в объектно-ориентированной разработке называют шаблон/программный код, предназначенный для создания объектов и методов.
3838
3939
В JavaScript классы можно организовать по-разному. Говорят, что класс `User` написан в "функциональном" стиле. Далее мы также увидим "прототипный" стиль.
4040
```

11-extra/4-books/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ CSS стоит изучать по одной из этих книг. Можно
3333
- <a href="http://www.ozon.ru/context/detail/id/6277333/?partner=iliakan">jQuery. Подробное руководство по продвинутому JavaScript.</a>
3434
<i>Бер Бибо, Иегуда Кац.</i>
3535

36-
## Объектно-ориентированное программирование
36+
## Объектно-ориентированное программирование [#books-oop]
3737

3838
Объектно-ориентированное программирование (ООП) -- это концепция построения программных систем на основе объектов и взаимодействия между ними. При изучении ООП рассматриваются полезные архитектурные приёмы, как организовать программу более эффективно.
3939

4-ajax/3-ajax-xmlhttprequest/article.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ xhr.send([body])
9797
: HTTP-код ответа: `200`, `404`, `403` и так далее. Может быть также равен `0`, если сервер не ответил или при запросе на другой домен.
9898

9999
`statusText`
100-
: Текстовое описание статуса от сервера: `OK` `Not Found`, `Forbidden` и так далее.
100+
: Текстовое описание статуса от сервера: `OK`, `Not Found`, `Forbidden` и так далее.
101101

102102
`responseText`
103103
: Текст ответа сервера.
@@ -218,21 +218,21 @@ const unsigned short DONE = 4; // запрос завершён
218218
```warn header="Ограничения на заголовки"
219219
Нельзя установить заголовки, которые контролирует браузер, например `Referer` или `Host` и ряд других (полный список [тут](http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader-method)).
220220
221-
Это ограничение существует в целях безопасности и для контроля корректности запроса.
221+
Это ограничение существует в целях безопасности и для контроля корректности запроса.
222222
```
223223

224224
````warn header="Поставленный заголовок нельзя снять"
225225
Особенностью `XMLHttpRequest` является то, что отменить `setRequestHeader` невозможно.
226226
227-
Повторные вызовы лишь добавляют информацию к заголовку, например:
227+
Повторные вызовы лишь добавляют информацию к заголовку, например:
228228
229-
```js
230-
xhr.setRequestHeader('X-Auth', '123');
231-
xhr.setRequestHeader('X-Auth', '456');
229+
```js
230+
xhr.setRequestHeader('X-Auth', '123');
231+
xhr.setRequestHeader('X-Auth', '456');
232232
233-
// в результате будет заголовок:
234-
// X-Auth: 123, 456
235-
```
233+
// в результате будет заголовок:
234+
// X-Auth: 123, 456
235+
```
236236
````
237237

238238
`getResponseHeader(name)`

5-animation/2-css-transitions/article.md

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -200,32 +200,12 @@ CSS для анимации:
200200

201201
Остальные кривые являются короткой записью следующих `cubic-bezier`:
202202

203-
<table>
204-
<thead>
205-
<tr>
206-
<th><code>ease</code><sup>*</sup></th>
207-
<th><code>ease-in</code></th>
208-
<th><code>ease-out</code></th>
209-
<th><code>ease-in-out</code></th>
210-
</tr>
211-
</thead>
212-
<tbody>
213-
<tr>
214-
<td><code>(0.25, 0.1, 0.25, 1.0)</code></td>
215-
<td><code>(0.42, 0, 1.0, 1.0)</code></td>
216-
<td><code>(0, 0, 0.58, 1.0)</code></td>
217-
<td><code>(0.42, 0, 0.58, 1.0)</code></td>
218-
</tr>
219-
<tr>
220-
<td>![](ease.png)</td>
221-
<td>![](ease-in.png)</td>
222-
<td>![](ease-out.png)</td>
223-
<td>![](ease-in-out.png)</td>
224-
</tr>
225-
</tbody>
226-
</table>
227-
228-
* - По умолчанию, если никакой временной функции не указано, -- используется `ease`.
203+
| <code>ease</code><sup>*</sup> | <code>ease-in</code> | <code>ease-out</code> | <code>ease-in-out</code> |
204+
|-------------------------------|----------------------|-----------------------|--------------------------|
205+
| <code>(0.25, 0.1, 0.25, 1.0)</code> | <code>(0.42, 0, 1.0, 1.0)</code> | <code>(0, 0, 0.58, 1.0)</code> | <code>(0.42, 0, 0.58, 1.0)</code> |
206+
| ![ease, figure](ease.png) | ![ease-in, figure](ease-in.png) | ![ease-out, figure](ease-out.png) | ![ease-in-out, figure](ease-in-out.png) |
207+
208+
`*` -- По умолчанию, если никакой временной функции не указано, используется `ease`.
229209

230210
**Кривая Безье может заставить анимацию "выпрыгивать" за пределы диапазона.**
231211

0 commit comments

Comments
 (0)