Skip to content

Commit 9a3a1a3

Browse files
committed
part of core.*
1 parent 57a8f74 commit 9a3a1a3

File tree

2 files changed

+16
-14
lines changed

2 files changed

+16
-14
lines changed

doc/ru/core/eval.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## Почему нельзя использовать `eval`
22

3-
Функция `eval` выполняет строку кода JavaScript в локальной области видимости.
3+
Функция `eval` исполняет хранящийся в строке код JavaScript в локальной области видимости.
44

55
var foo = 1;
66
function test() {
@@ -11,7 +11,7 @@
1111
test(); // 3
1212
foo; // 1
1313

14-
Но `eval` исполняется в локальной области видимости только тогда, когда он вызывается **напрямую** *и при этом* имя вызываемой функции именно `eval`.
14+
Однако, `eval` исполняется в локальной области видимости тогда и только тогда, когда он вызывается явно *и при этом* имя вызывающейся функции идентично `eval` (''прим. перев.'' — ох!).
1515

1616
var foo = 1;
1717
function test() {
@@ -23,17 +23,17 @@
2323
test(); // 2
2424
foo; // 3
2525

26-
**Любой ценой** избегайте использования функции `eval`. 99.9% «трюков» с её «использованием» могут решаться **без её участия**.
26+
**Любой ценой** избегайте использования функции `eval`. 99.9% «трюков» с её «использованием» могут легко решаться и **без её участия**.
2727

2828
### `eval` под прикрытием
2929

30-
Обе [функции работы с интервалами времени](#other.timeouts) `setTimeout` и `setInterval` могут принимать строку в качестве первого аргумента. Эта строка **всегда** будет выполняться в глобальной области видимости, поскольку `eval` в этом случае вызывается *не напрямую*.
30+
Обе [функции работы с интервалами времени](#other.timeouts) `setTimeout` и `setInterval` могут принимать строку в качестве первого аргумента. Эта строка **всегда** будет выполняться в глобальной области видимости, поскольку `eval` в этом случае вызывается *неявно*.
3131

3232
### Проблемы с безопасностью
3333

34-
Кроме всего прочего, функция `eval` — это проблема в безопасности, поскольку исполняется **любой** переданный в неё код; **никогда** не следует использовать её со строками из неизвестных или недоверительных источников.
34+
Кроме всего прочего, функция `eval` — это проблема в безопасности, поскольку она выполняет **любой** переданный в неё код; **никогда** не следует использовать её со строками из неизвестных или недоверительных источников.
3535

3636
### Заключение
3737

38-
Никогда не стоит использовать `eval`: любое применение такого кода поднимает вопросы о качестве его работы, производительности и безопасности. Если вдруг для работы вам необходим `eval`, эта часть должна тут же ставиться под сомнение и **не** должна использоваться в первую очередь — необходимо найти *лучший способ* , которому не требуются вызовы `eval`.
38+
Использовать `eval` не стоит никогда: любой код с участием этой функции автоматически порождает вопросы о качестве его работы, производительности и безопасности. Если вдруг для работы вам необходим `eval`, эта часть кода должна тут же ставиться под сомнение и в первую очередь *исключаться** из проекта — необходимо найти *лучший способ*, которому не требуются вызовы `eval`.
3939

doc/ru/core/undefined.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,25 @@
11
## `undefined` и `null`
22

3-
В JavaScript есть два отдельных типа для представления `ничего`, при этом более полезным из них является `undefined`.
3+
В JavaScript есть два отдельных типа для описания *ничего*`null` и `undefined`, при этом последний из них более полезен.
44

5-
### Тип `undefined`
5+
### Значение `undefined`
66

77
`undefined` — это тип с единственным возможным значением: `undefined`.
88

9-
Кроме этого, в языке определена глобальная переменная со значением `undefined`, и эта переменная так и называется — `undefined`. Не являясь константой, она не является и ключевым словом. Из этого следует, что её значение можно с лёгкостью переопределить.
9+
Кроме этого, в языке определена глобальная переменная со значением `undefined`, причём эта переменная так и называется — `undefined`. Не являясь константой, она не является и ключевым словом. Из этого следует, что её значение можно с лёгкостью переопределить.
1010

11-
> **ES5 Замечание:** в ECMAScript 5 переменная `undefined` **больше не** *доступна на запись* в strict-режиме, однако она всё так же может быть перегружена по имени, например - функцией с именем `undefined`.
11+
> **ES5 Замечание:** в ECMAScript 5 переменная `undefined` **уже не** *доступна на запись* в strict-режиме, однако она всё так же может быть перегружена по имени, например - функцией с именем `undefined`.
1212
13-
Несколько случаев, когда возвращается `undefined`:
13+
Список случаев, когда код возвращает значение `undefined`:
1414

15-
- При попытке доступа к глобальной переменной `undefined` (если она не изменена).
15+
- При попытке доступа к глобальной переменной `undefined` (если она не была переопределена).
16+
- При попытке доступа к переменной, которая *ещё не была* инициализирована каким-либо значением.
1617
- Неявный возврат из функции при отсутствии в ней оператора `return`.
17-
- Из операторов `return`, которые ничего не возвращают.
18+
- Из операторов `return`, которые не возвращают явных значений.
1819
- В результате поиска несуществующего свойства у объекта (и доступа к нему).
19-
- Параметры, которые не были переданы в функцию явно.
20+
- При доступе к аргументам функции, которые явно не были в неё переданы.
2021
- При доступе ко всему, чьим значением является `undefined`.
22+
- В результате вычисления любого выражения в форме `void(выражение)`.
2123

2224
### Обработка изменений значения `undefined`
2325

0 commit comments

Comments
 (0)