Symbol
Вопрос
Что такое Symbol и зачем он нужен?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
примитив, каждое значение уникально
не попадает в for...in и JSON.stringify
используется для служебных полей, которые не должны конфликтовать
well-known символы задают поведение: Symbol.iterator, Symbol.asyncIterator
Symbol.for кладёт символ в глобальный реестр
Что могут спросить следом
- Как сделать свой объект перебираемым в for...of
- Чем Symbol.for отличается от Symbol
- Где в стандартной библиотеке символы уже используются
Разбор
Symbol() создаёт уникальный примитив: два символа с одинаковым описанием не равны.
Как ключ свойства он не появляется ни в for...in, ни в Object.keys, ни в JSON.stringify -
поэтому им помечают служебные поля, которые не должны столкнуться с пользовательскими.
Well-known символы - точки расширения языка: Symbol.iterator делает объект перебираемым
в for...of, Symbol.asyncIterator - в for await, Symbol.toPrimitive управляет
приведением типов.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.