From 869dd2069c695ee7040cd3261713212155819f42 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Mon, 14 Dec 2020 12:18:12 -0500 Subject: final dump 2020-12-14 --- .../index.html" | 36 +++++++++++++--------- 1 file changed, 22 insertions(+), 14 deletions(-) (limited to 'files/uk/glossary') diff --git "a/files/uk/glossary/\321\201\320\270\320\274\320\262\320\276\320\273/index.html" "b/files/uk/glossary/\321\201\320\270\320\274\320\262\320\276\320\273/index.html" index fd9ceb772a..5b0a3767a1 100644 --- "a/files/uk/glossary/\321\201\320\270\320\274\320\262\320\276\320\273/index.html" +++ "b/files/uk/glossary/\321\201\320\270\320\274\320\262\320\276\320\273/index.html" @@ -18,7 +18,7 @@ translation_of: Glossary/Symbol

Символьне значення є унікальним ідентифікатором. Наприклад,

-
// Ось два символи з однаковим описом,
+
// Ось два символи з однаковим описом,
 let Sym1 = Symbol("Sym");
 let Sym2 = Symbol("Sym");
 
@@ -27,37 +27,42 @@ console.log(Sym1 == Sym2); // повертає "false"
 // Навіть якщо ми створимо багато символів з тим самим описом,
 // вони будуть різними значеннями.
-

Заувага: Якщо ви знайомі з Ruby чи іншою мовою, що має свій аналог “символів” – будь ласка, не плутайте. Символи JavaScript інші.

+
+

Заувага: Якщо ви знайомі з Ruby чи іншою мовою, що має свій аналог “символів” – будь ласка, не плутайте. Символи JavaScript інші.

+
-

Символьний тип - це новий функціонал у ECMAScript 2015, і він не має еквіваленту у ECMAScript 5. У деяких мовах програмування символьний тип даних також називається "атом".

+

Символьний тип - це новий функціонал у ECMAScript 2015, і він не має еквіваленту у ECMAScript 5.

-

Символи не мають автоматичного перетворення у "рядки"

+

У деяких мовах програмування символьний тип даних також називається "атом".

+ +

Символи не мають автоматичного перетворення у рядки

Більшість значень у JavaScript підтримують неявне перетворення у рядки. Наприклад, ми можемо викликати alert майже з будь-яким значенням, і це спрацює. Символи особливі. Вони не перетворюються автоматично.

Наприклад,

-
let Sym = Symbol("Sym");
-
+
let Sym = Symbol("Sym");
 alert(Sym); // TypeError: Cannot convert a Symbol value to a string

Це “мовний захист” від плутанини, тому що рядки та символи є фундаментально різними, і не повинні випадково перетворюватись один на одного.

-

Якщо нам дуже потрібно вивести символ, треба викликати на ньому метод .toString(), наприклад,

+

Якщо нам дуже потрібно вивести символ, треба викликати на ньому метод .toString().

-
let Sym = Symbol("Sym");
+
let Sym = Symbol("Sym");
 
 alert(Sym.toString()); // Symbol(Sym), тепер це працює
-

Або ми можемо скористатись властивістю символу symbol.description, щоб дістати його опис, наприклад,

+

Або ми можемо скористатись властивістю символу symbol.description, щоб дістати його опис, наприклад,

-
let _Sym = Symbol("Sym");
+
let _Sym = Symbol("Sym");
 
 alert(_Sym.description); // Sym

Добревідомі символи

-

Клас {{jsxref("Symbol")}} має константи для так званих добревідомих символів. Ці символи дозволяють налаштовувати взаємодію JS з об'єктом, використовуючи їх в якості ключів. Прикладами добревідомих символів є: {{jsxref("Symbol.iterator")}} для подібних до масивів об'єктів, або {{jsxref("Symbol.search")}} для рядкових об'єктів.

+

Клас {{jsxref("Symbol")}} має константи для так званих добревідомих символів (well-known symbols). Ці символи дозволяють налаштовувати взаємодію JS з об'єктом, використовуючи їх в якості ключів.

+ +

Прикладами добревідомих символів є: {{jsxref("Symbol.iterator")}} для подібних до масивів об'єктів, або {{jsxref("Symbol.search")}} для рядкових об'єктів.

Вони наведені у таблиці специфікації Добревідомі символи:

@@ -71,9 +76,11 @@ alert(_Sym.description); // Sym

Глобальний реєстр символів

-

Методами, що мають доступ до глобального реєстру символів, є {{jsxref("Symbol.for()")}} і {{jsxref("Symbol.keyFor()")}}; це посередники між глобальною таблицею (або "реєстром") символів та середовищем виконання. Реєстр символів переважно збудований інфраструктурою компілятора Javascript, а вміст реєстру символів не доступний для інфраструктури виконання Javascript, окрім як за допомогою цих методів. Метод Symbol.for(tokenString) повертає символьне значенняз реєстру, а Symbol.keyFor(symbolValue) повертає рядковий токен з реєстру; ці функції зворотні одна одній, тому наступне є істиною:

+

Методами, що мають доступ до глобального реєстру символів, є {{jsxref("Symbol.for()")}} і {{jsxref("Symbol.keyFor()")}}; це посередники між глобальною таблицею (або "реєстром") символів та середовищем виконання. Реєстр символів переважно збудований інфраструктурою компілятора Javascript, а вміст реєстру символів не доступний для інфраструктури виконання Javascript, окрім як за допомогою цих методів.

+ +

Метод Symbol.for(tokenString) повертає символьне значенняз реєстру, а Symbol.keyFor(symbolValue) повертає рядковий токен з реєстру; ці функції зворотні одна одній, тому наступне є істиною:

-
Symbol.keyFor(Symbol.for("tokenString")) === "tokenString"; // true
+
Symbol.keyFor(Symbol.for("tokenString")) === "tokenString" // true

Дізнайтеся більше

@@ -83,7 +90,7 @@ alert(_Sym.description); // Sym
  • Symbol (programming) на Вікіпедії
  • Типи та структури даних у JavaScript
  • Символи у ECMAScript 6
  • -
  • {{jsxref("Symbol")}} у довідці MDN
  • +
  • {{jsxref("Symbol")}} у довідці MDN з JS
  • {{jsxref("Object.getOwnPropertySymbols()")}}
  • @@ -96,5 +103,6 @@ alert(_Sym.description); // Sym
  • {{Glossary("Primitive","Простий тип даних")}}
  • +
  • {{jsxref("Symbol")}}
  • -- cgit v1.2.3-54-g00ecf