логотип PurpleSchool
логотип PurpleSchool

Symbol в JavaScript

Автор

Дмитрий Нечаев

В JavaScript символы (Symbol) представляют собой примитивный тип данных, который используется для создания уникальных идентификаторов. Они были добавлены в ECMAScript 6 (ES6) и предоставляют уникальные значения, которые не равны ни одному другому значению, включая другие символы. Давайте рассмотрим, как использовать символы и их особенности.

Создание символов

Символы создаются с помощью глобальной функции Symbol(). Каждый символ, созданный этой функцией, уникален.

const symbol1 = Symbol();
const symbol2 = Symbol();

console.log(symbol1 === symbol2); // Выведет: false, потому что символы уникальны

Описание символа

Для создания описания (description) символа можно передать строку в функцию Symbol().

const symbol = Symbol("Описание символа");
console.log(symbol); // Выведет: Symbol(Описание символа)

Использование символов

Символы часто используются в качестве имен свойств объектов, чтобы гарантировать их уникальность.

const firstName = Symbol("Имя");
const person = {};

person[firstName] = "John";
console.log(person[firstName]); // Выведет: John

Символы и for...in

Символы не участвуют в итерации с помощью цикла for...in.

const symbol = Symbol();
const obj = { [symbol]: "value" };

for (let key in obj) {
  console.log(key); // Ничего не выведет, так как символы не участвуют в итерации
}

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

Глобальные символы создаются с помощью метода Symbol.for(). Если символ с указанным именем уже существует, он будет возвращен, в противном случае новый символ будет создан.

const globalSymbol1 = Symbol.for("globalSymbol");
const globalSymbol2 = Symbol.for("globalSymbol");

console.log(globalSymbol1 === globalSymbol2); // Выведет: true, потому что символы с одинаковым именем равны

Встроенные символы

JavaScript также предоставляет ряд встроенных символов, доступных через глобальные свойства, такие как Symbol.iterator, Symbol.match, Symbol.toPrimitive и другие.

const arr = [1, 2, 3];
const iterator = arr[Symbol.iterator]();

console.log(iterator.next()); // Выведет: { value: 1, done: false }
console.log(iterator.next()); // Выведет: { value: 2, done: false }
console.log(iterator.next()); // Выведет: { value: 3, done: false }
console.log(iterator.next()); // Выведет: { value: undefined, done: true }

Заключение

Символы в JavaScript представляют собой уникальные идентификаторы, которые используются для обеспечения уникальности имен свойств объектов. Они полезны во многих сценариях программирования, где требуется гарантировать уникальность идентификаторов. Использование символов улучшает безопасность и читаемость кода, а также предотвращает конфликты имен в приложениях.

Стрелочка влевоПреобразование типов в JavaScriptСтрока в JavaScriptСтрелочка вправо

Все гайды по Javascript

Как работает метод trim() - JavaScriptКак работает метод toUpperCase() - JavaScriptКак работает метод toLowerCase() - JavaScriptКак работает метод substring() - JavaScriptКак работает метод startsWith() - JavaScriptКак работает метод split() - JavaScriptКак работает метод slice() - JavaScriptКак работает метод search() - JavaScriptКак работает метод replaceAll() - JavaScriptКак работает метод replace() - JavaScriptКак работает метод repeat() - JavaScriptКак работает метод padStart() - JavaScriptКак работает метод padEnd() - JavaScriptКак работает метод matchAll() - JavaScriptКак работает метод match() - JavaScriptКак работает метод localeCompare() - JavaScriptКак работает свойство length - JavaScriptКак работает метод lastIndexOf() - JavaScriptКак работает метод indexOf() - JavaScriptКак работает метод includes() - JavaScriptКак работает метод fromCodePoint() - JavaScriptКак работает метод fromCharCode() - JavaScriptКак работает метод endsWith() - JavaScriptКак работает метод concat() - JavaScriptКак работает метод codePointAt() - JavaScriptКак работает метод charCodeAt() - JavaScriptКак работает метод charAt() - JavaScript
Итератор в JavaScript
try...catch в JavaScriptError в JavaScript
Событие wheel в JavaScriptСобытие unload в JavaScriptСобытие touch в JavaScriptСобытие submit в JavaScriptСобытие scroll в JavaScriptСобытие reset в JavaScriptМетод .preventDefault() в JavaScriptСобытие mouseover в JavaScriptСобытие mouseout в JavaScriptСобытие load в JavaScriptСобытие keyup в JavaScriptСобытие keydown в JavaScriptСобытие invalid в JavaScriptСобытие input в JavaScriptСобытийная модель Event в JavaScriptОбъект события Event в JavaScriptСобытие DOMContentLoaded в JavaScriptСобытие dblclick в JavaScriptСобытие click в JavaScriptСобытие change в JavaScriptСобытие beforeunload в JavaScript
Как работает метод some() - JavaScriptКак работает метод reverse() - JavaScriptКак работает метод reduce() - JavaScriptКак работает метод map() - JavaScriptКак работает метод isArray() - JavaScriptКак работает метод indexOf() - JavaScriptКак работает метод includes() - JavaScriptКак работает метод from() - JavaScriptКак работает метод forEach() - JavaScriptКак работает метод flatMap() - JavaScriptКак работает метод flat() - JavaScriptКак работает метод findIndex() - JavaScriptКак работает метод find() - JavaScriptКак работает метод filter() - JavaScriptКак работает метод every() - JavaScriptМассивы в JavaScript
Открыть базу знаний