Skip to content

Commit bf85f46

Browse files
committed
regexp renovations
1 parent b2f6df9 commit bf85f46

File tree

24 files changed

+311
-132
lines changed

24 files changed

+311
-132
lines changed

1-js/4-data-structures/11-datetime/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ alert( 'Время walkLength: ' + bench(walkLength) + 'мс' );
281281
282282
Теперь представим себе, что во время первого бенчмаркинга `bench(walkIn)` компьютер что-то делал параллельно важное (вдруг) и это занимало ресурсы, а во время второго -- перестал. Реальная ситуация? Конечно реальна, особенно на современных ОС, где много процессов одновременно.
283283
284-
**Гораздо более надёжные результаты можно получить, весь пакет тестов прогнать много раз.**
284+
**Гораздо более надёжные результаты можно получить, если весь пакет тестов прогнать много раз.**
285285
286286
```js
287287
//+ run

1-js/4-data-structures/12-typeof-duck-typing/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ if (x.getTime) {
121121

122122
## Полиморфизм
123123

124-
Пример полимофрной функции -- `sayHi(who)`, которая будет говорить "Привет" своему аргументу, причём если передан массив -- то "Привет" каждому:
124+
Пример полиморфной функции -- `sayHi(who)`, которая будет говорить "Привет" своему аргументу, причём если передан массив -- то "Привет" каждому:
125125

126126
```js
127127
//+ run

1-js/4-data-structures/5-object-for-in/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,6 @@ for (var code in codes) {
166166
<ul>
167167
<li>Цикл по ключам: `for (key in obj)`.</li>
168168
<li>Порядок перебора соответствует порядку объявления для нечисловых ключей, а числовые -- сортируются (в современных браузерах).</li>
169-
<li>Для того, чтобы гарантировать перебор ключей в нужном порядке, их делают "нечисловыми", например добавляя в начало `+`, а потом, в процессе обработки, преобразуют ключи в числа.</li>
169+
<li>Если нужно, чтобы порядок перебора числовых ключей соответствовал их объявлению в объекте, то используют трюк: числовые ключи заменяют на похожие, но содержащие не только цифры. Например, добавляют в начало `+`, как описано в примере выше, а потом, в процессе обработки, преобразуют такие ключи в числа.</li>
170170
</ul>
171171

1-js/4-data-structures/7-array/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ fruits.push("Груша");
124124
alert( fruits ); // Яблоко, Апельсин, Груша
125125
```
126126

127-
Является полным аналогом `fruits[fruits.length] = ...`.
127+
Вызов `fruits.push(...)` равнозначен `fruits[fruits.length] = ...`.
128128
</dd>
129129
</dl>
130130

1-js/4-data-structures/8-array-methods/11-array-unique/solution.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
```js
88
//+ run
99
function unique(arr) {
10-
var obj = {};
1110
var result = [];
1211

1312
nextInput:
@@ -52,7 +51,7 @@ alert( unique(strings) ); // кришна, харе, 8-()
5251

5352
# Решение с объектом (быстрое)
5453

55-
Наилучшая техника для выбора уникальных строк -- использование вспомогательного объекта. Ведь название свойства в объекте, с одной стороны -- строка, а с другой -- всегда уникально. Повторная запись в свойство с тем же именем перезапишет его.
54+
Наилучшая техника для выбора уникальных строк -- использование вспомогательного объекта `obj`. Ведь название свойства в объекте, с одной стороны -- строка, а с другой -- всегда уникально. Повторная запись в свойство с тем же именем перезапишет его.
5655

5756
Например, если `"харе"` попало в объект один раз (`obj["харе"] = true`), то второе такое же присваивание ничего не изменит.
5857

1-js/4-data-structures/8-array-methods/article.md

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,12 @@ alert( arr[1] ); // undefined
9999
100100
<dl>
101101
<dt>`arr.splice(index[, deleteCount, elem1, ..., elemN])`</dt>
102-
<dd>Удалить `deleteCount` элементов, начиная с номера `index`, а затем вставить `elem1, ..., elemN` на их место.</dd>
102+
<dd>Удалить `deleteCount` элементов, начиная с номера `index`, а затем вставить `elem1, ..., elemN` на их место. Возвращает массив из удалённых элементов.</dd>
103103
</dl>
104104
105-
Посмотрим примеры.
105+
Этот метод проще всего понять, рассмотрев примеры.
106+
107+
Начнём с удаления:
106108
107109
```js
108110
//+ run
@@ -115,20 +117,7 @@ arr.splice(1, 1); // начиная с позиции 1, удалить 1 эле
115117
alert( arr ); // осталось ["Я", "JavaScript"]
116118
```
117119
118-
Ниже продемонстрировано, как использовать `splice` для удаления одного элемента. Следующие за удаленным элементы сдвигаются, чтобы заполнить его место.
119-
120-
```js
121-
//+ run
122-
var arr = ["Я", "изучаю", "JavaScript"];
123-
124-
*!*
125-
arr.splice(0, 1); // удалить 1 элемент, начиная с позиции 0
126-
*/!*
127-
128-
alert( arr[0] ); // "изучаю" стал первым элементом
129-
```
130-
131-
Следующий пример показывает, как *заменять элементы*:
120+
В следующем примере мы удалим 3 элемента и вставим другие на их место:
132121
133122
```js
134123
//+ run
@@ -140,7 +129,7 @@ arr.splice(0, 3, "Мы", "изучаем")
140129
alert( arr ) // теперь [*!*"Мы", "изучаем"*/!*, "JavaScript"]
141130
```
142131
143-
Метод `splice` возвращает массив из удаленных элементов:
132+
Здесь видно, что `splice` возвращает массив из удаленных элементов:
144133
145134
```js
146135
//+ run

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ sayHi('Вася');
6363
```
6464

6565
</li>
66-
<li>В конце выполнения функции объект с переменными обычно выбрасывается и память очищается.</li>
66+
<li>В конце выполнения функции объект с переменными обычно выбрасывается и память очищается. В примерах выше так и происходит. Через некоторое время мы рассмотрим более сложные ситуации, при которых объект с переменными сохраняется и после завершения функции.</li>
6767
</ol>
6868

6969
[smart header="Тонкости спецификации"]
@@ -144,8 +144,7 @@ say('Вася'); // Пока, Вася (**)
144144

145145
На момент первого запуска `(*)`, переменная `phrase` имела значение `'Привет'`, а ко второму `(**)` изменила его на `'Пока'`.
146146

147-
Это естественно, ведь для доступа к внешним переменным функция хранит ссылку `[[Scope]]` на весь внешний объект с ними, а не на каждое его свойство (переменную) по отдельности.
148-
147+
Это естественно, ведь для доступа к внешней переменной функция по ссылке `[[Scope]]` обращается во внешний объект переменных и берёт то значение, которое там есть на момент обращения.
149148

150149
## Вложенные функции
151150

@@ -182,7 +181,7 @@ getFullName.[[Scope]] = объект переменных текущего за
182181

183182
Благодаря этому `getFullName()` получает снаружи `firstName` и `lastName`.
184183

185-
Заметим, что если переменная не найдена во внешнем объекте переменных, то она ищется ещё более внешнем (через `[[Scope]]` внешней функции), то есть, такой пример тоже будет работать:
184+
Заметим, что если переменная не найдена во внешнем объекте переменных, то она ищется в ещё более внешнем (через `[[Scope]]` внешней функции), то есть, такой пример тоже будет работать:
186185

187186
```js
188187
//+ run
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
Результат: `123 456`.
3+
4+
Ленивый `\d+?` будет брать цифры до пробела, то есть `123`. После каждой цифры он будет останавливаться, проверять -- не пробел ли дальше? Если нет -- брать ещё цифру, в итоге возьмёт `123`.
5+
6+
З в дело вступит `\d+`, который по-максимуму возьмёт дальнейшие цифры, то есть `456`.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Совпадение для /d+? d+/
2+
3+
Мы разобрали совпадение:
4+
```js
5+
"123 456".match(/\d+ \d+?/g) ); // 123 4
6+
```
7+
8+
А что будет, если сначала поставить ленивый, а потом жадный квантификаторы?
9+
10+
```js
11+
"123 456".match(/\d+? \d+/g) ); // какой результат?
12+
```
13+

0 commit comments

Comments
 (0)