--- sidebar_position: 6 --- # Тип данных Symbol Символ (symbol) – примитивный тип данных, использующийся для создания уникальных идентификаторов. ```js // Создаём новый символ - id let id = Symbol(); ``` При создании, символу можно дать описание (также называемое имя), в основном использующееся для отладки кода Символы гарантированно уникальны. Даже если мы создадим множество символов с одинаковым описанием, это всё равно будут разные символы. Описание – это просто метка, которая ни на что не влияет. ```js let id1 = Symbol("id"); let id2 = Symbol("id"); alert(id1 == id2); // false ``` 💥***Символы не преобразуются автоматически в строки*** #### Символы игнорируются циклом for…in Свойства, чьи ключи – символы, не перебираются циклом for..in. Символы имеют два основных варианта использования: 1. «Скрытые» свойства объектов. Если мы хотим добавить свойство в объект, который «принадлежит» другому скрипту или библиотеке, мы можем создать символ и использовать его в качестве ключа. Символьное свойство не появится в for..in, так что оно не будет нечаянно обработано вместе с другими. Также оно не будет модифицировано прямым обращением, так как другой скрипт не знает о нашем символе. Таким образом, свойство будет защищено от случайной перезаписи или использования. Так что, используя символьные свойства, мы можем спрятать что-то нужное нам, но что другие видеть не должны. 2. Существует множество системных символов, используемых внутри JavaScript, доступных как Symbol.*. Мы можем использовать их, чтобы изменять встроенное поведение ряда объектов. Например, в дальнейших главах мы будем использовать Symbol.iterator для итераторов, Symbol.toPrimitive для настройки преобразования объектов в примитивы и так далее. 🚀 **Источник: [https://learn.javascript.ru/symbol](https://learn.javascript.ru/symbol)**