regexp renovations

This commit is contained in:
Ilya Kantor 2015-03-19 17:20:12 +03:00
parent b2f6df9d45
commit bf85f46cf9
24 changed files with 311 additions and 132 deletions

View file

@ -63,7 +63,7 @@ sayHi('Вася');
```
</li>
<li>В конце выполнения функции объект с переменными обычно выбрасывается и память очищается.</li>
<li>В конце выполнения функции объект с переменными обычно выбрасывается и память очищается. В примерах выше так и происходит. Через некоторое время мы рассмотрим более сложные ситуации, при которых объект с переменными сохраняется и после завершения функции.</li>
</ol>
[smart header="Тонкости спецификации"]
@ -144,8 +144,7 @@ say('Вася'); // Пока, Вася (**)
На момент первого запуска `(*)`, переменная `phrase` имела значение `'Привет'`, а ко второму `(**)` изменила его на `'Пока'`.
Это естественно, ведь для доступа к внешним переменным функция хранит ссылку `[[Scope]]` на весь внешний объект с ними, а не на каждое его свойство (переменную) по отдельности.
Это естественно, ведь для доступа к внешней переменной функция по ссылке `[[Scope]]` обращается во внешний объект переменных и берёт то значение, которое там есть на момент обращения.
## Вложенные функции
@ -182,7 +181,7 @@ getFullName.[[Scope]] = объект переменных текущего за
Благодаря этому `getFullName()` получает снаружи `firstName` и `lastName`.
Заметим, что если переменная не найдена во внешнем объекте переменных, то она ищется ещё более внешнем (через `[[Scope]]` внешней функции), то есть, такой пример тоже будет работать:
Заметим, что если переменная не найдена во внешнем объекте переменных, то она ищется в ещё более внешнем (через `[[Scope]]` внешней функции), то есть, такой пример тоже будет работать:
```js
//+ run