Ответ вслух Middle Современный синтаксис обновлено

Symbol

Вопрос

Что такое Symbol и зачем он нужен?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Symbol() создаёт уникальный примитив: два символа с одинаковым описанием не равны. Как ключ свойства он не появляется ни в for...in, ни в Object.keys, ни в JSON.stringify - поэтому им помечают служебные поля, которые не должны столкнуться с пользовательскими.

Что должно прозвучать в ответе

  • примитив, каждое значение уникально

  • не попадает в 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 ошибок.

Термины по теме