You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/1-getting-started/4-devtools/article.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Консоль разработчика
2
2
3
-
При разработке скриптов всегда возможны ошибки... Впрочем, что я говорю? У вас абсолютно точно будут ошибки, если конечно вы -- человек, а не <ahref="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)).
4
4
5
5
Чтобы читать их в удобном виде, а также получать массу полезной информации о выполнении скриптов, в браузерах есть *инструменты разработки*.
Какой-то очень простой код, не правда ли? Зачем, вообще, может понадобиться такая `ask`?
208
215
209
-
...Но при работе со страницей такие функции как раз очень востребованы, только вот спрашивают они не простым `confirm`, а выводят более красивое окно с вопросом и могут интеллектуально обработать ввод посетителя. Но это всё в своё время.
216
+
...Оказывается, при работе со страницей такие функции как раз очень востребованы, только вот спрашивают они не простым `confirm`, а выводят более красивое окно с вопросом и могут интеллектуально обработать ввод посетителя. Но это всё потом, когда перейдём к работе с интерфейсом.
210
217
211
-
Здесь обратим внимание на то, что то же самое можно написать более коротко:
218
+
Здесь же обратим внимание на то, что то же самое можно написать более коротко:
Copy file name to clipboardExpand all lines: 1-js/2-first-steps/8-operators/article.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -195,7 +195,7 @@ alert( 8 % 3 ); // 2, остаток от деления 8 на 3
195
195
alert( 6 % 3 ); // 0, остаток от деления 6 на 3
196
196
```
197
197
198
-
## Инкремент/декремент:++, --
198
+
## Инкремент/декремент:`++`, `--`
199
199
200
200
Одной из наиболее частых операций в JavaScript, как и во многих других языках программирования, является увеличение или уменьшение переменной на единицу.
Как правило, ошибка в программе... Во всяком случае, в большинстве языков программирования это именно так.
38
38
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)), и если подразумевать предел, то в качестве результата деления на `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"`.
40
40
41
41
```js run
42
42
alert( 1/0 ); // Infinity
@@ -96,17 +96,6 @@ alert( 0 / 0 ); // NaN
96
96
alert( isNaN("12") ); // false, строка преобразовалась к обычному числу 12
97
97
```
98
98
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
-
````
110
99
- Значение `NaN`"прилипчиво". Любая операция с `NaN` возвращает `NaN`.
111
100
112
101
```js run
@@ -115,6 +104,21 @@ alert( 0 / 0 ); // NaN
115
104
116
105
Если аргумент `isNaN`-- не число, то он автоматически преобразуется к числу.
117
106
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
+
118
122
```smart header="Математические операции в JS безопасны"
119
123
Никакие математические операции в JavaScript не могут привести к ошибке или "обрушить" программу.
Copy file name to clipboardExpand all lines: 1-js/5-functions-closures/2-closures/article.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -366,7 +366,7 @@ alert( counter() ); // 5
366
366
367
367
## Итого: замыкания
368
368
369
-
[Замыкание](http://en.wikipedia.org/wiki/Closure_(computer_science)) -- это функция вместе со всеми внешними переменными, которые ей доступны.
369
+
[Замыкание](http://en.wikipedia.org/wiki/Closure_(computer_science)) -- это функция вместе со всеми внешними переменными, которые ей доступны.
370
370
371
371
Таково стандартное определение, которое есть в Wikipedia и большинстве серьёзных источников по программированию. То есть, замыкание -- это функция + внешние переменные.
Copy file name to clipboardExpand all lines: 1-js/5-functions-closures/6-memory-management/article.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@
18
18
Эти значения гарантированно хранятся в памяти. Мы будем называть их *корнями*.
19
19
2.**Любое другое значение сохраняется в памяти лишь до тех пор, пока доступно из корня по ссылке или цепочке ссылок.**
20
20
21
-
Для очистки памяти от недостижимых значений в браузерах используется автоматический <ahref="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), встроенный в интерпретатор, который наблюдает за объектами и время от времени удаляет недостижимые.
22
22
23
23
Самая простая ситуация здесь с примитивами. При присвоении они копируются целиком, ссылок на них не создаётся, так что если в переменной была одна строка, а её заменили на другую, то предыдущую можно смело выбросить.
Copy file name to clipboardExpand all lines: 1-js/8-oop/1-about-oop/article.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -34,7 +34,7 @@ vasya.sayHi(); // пользователь умеет говорить "Прив
34
34
Здесь мы видим ярко выраженную сущность -- `User` (посетитель). Используя терминологию ООП, такие конструкторы часто называют *классами*, то есть можно сказать "класс `User`".
35
35
36
36
```smart header="Класс в ООП"
37
-
[Классом]("https://en.wikipedia.org/wiki/Class_(computer_programming)") в объектно-ориентированной разработке называют шаблон/программный код, предназначенный для создания объектов и методов.
37
+
[Классом](https://en.wikipedia.org/wiki/Class_(computer_programming)) в объектно-ориентированной разработке называют шаблон/программный код, предназначенный для создания объектов и методов.
38
38
39
39
В JavaScript классы можно организовать по-разному. Говорят, что класс `User` написан в "функциональном" стиле. Далее мы также увидим "прототипный" стиль.
Объектно-ориентированное программирование (ООП) -- это концепция построения программных систем на основе объектов и взаимодействия между ними. При изучении ООП рассматриваются полезные архитектурные приёмы, как организовать программу более эффективно.
Нельзя установить заголовки, которые контролирует браузер, например `Referer` или `Host` и ряд других (полный список [тут](http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader-method)).
220
220
221
-
Это ограничение существует в целях безопасности и для контроля корректности запроса.
221
+
Это ограничение существует в целях безопасности и для контроля корректности запроса.
222
222
```
223
223
224
224
````warn header="Поставленный заголовок нельзя снять"
225
225
Особенностью `XMLHttpRequest` является то, что отменить `setRequestHeader` невозможно.
226
226
227
-
Повторные вызовы лишь добавляют информацию к заголовку, например:
227
+
Повторные вызовы лишь добавляют информацию к заголовку, например:
0 commit comments