Skip to content

Commit b50be79

Browse files
committed
symbol better explanation
1 parent f15521e commit b50be79

2 files changed

Lines changed: 9 additions & 3 deletions

File tree

  • 1-js
    • 10-es-modern/8-symbol
    • 5-functions-closures/2-closures/1-say-phrase-first

1-js/10-es-modern/8-symbol/article.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ alert( Symbol("name") == Symbol("name") ); // false
4646

4747
## Глобальные символы
4848

49-
Существует "глобальный реестр" символов, который позволяет, при необходимости, передавать символы между частями программы.
49+
Существует "глобальный реестр" символов, который позволяет, при необходимости, иметь общие "глобальные" символы, которые можно получить из реестра по имени.
5050

5151
Для чтения (или создания, при отсутствии) "глобального" символа служит вызов `Symbol.for(имя)`.
5252

@@ -63,7 +63,13 @@ let name = Symbol.for("name");
6363
alert( Symbol.for("name") == name ); // true
6464
```
6565

66-
Вызов `Symbol.for` возвращает символ по имени. Обратным для него является вызов `Symbol.keyFor(sym)`, который позволяет получить по глобальному символу его имя:
66+
Таким образом, можно из разных частей программы, обратившись к реестру, получить единый глобальный символ с именем `"name"`.
67+
68+
[smart]
69+
В некоторых языках программирования, например Ruby, имя однозначно идентифицирует символ. В JavaScript, как мы видим, это верно для глобальных символов.
70+
[/smart]
71+
72+
У вызова `Symbol.for`, который возвращает символ по имени, есть обратный вызов -- `Symbol.keyFor(sym)`. Он позволяет получить по глобальному символу его имя:
6773

6874

6975
```js

1-js/5-functions-closures/2-closures/1-say-phrase-first/task.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[importance 5]
44

5-
Что будет, если вызов `sayHi('Вася');` стоит в самом-самом начале, в первой строке кода?
5+
Что будет, если вызов `say('Вася');` стоит в самом-самом начале, в первой строке кода?
66

77
```js
88
*!*

0 commit comments

Comments
 (0)