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

Symbol и Symbol.for

Вопрос

Что выведет код?

console.log(Symbol('id') === Symbol('id'), Symbol.for('id') === Symbol.for('id'));

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: false true. Каждый вызов Symbol('id') создаёт новый уникальный символ, строка лишь описание для отладки, поэтому false.

Варианты ответа

  1. true true
  2. false trueправильный ответ
  3. false false
  4. true false

Разбор

Каждый вызов Symbol('id') создаёт новый уникальный символ, строка лишь описание для отладки, поэтому false. Symbol.for('id') работает через глобальный реестр: первый вызов создаёт символ, следующие с тем же ключом возвращают его же, поэтому true. Реестр общий для всех realm-ов, в том числе для iframe на странице, поэтому библиотеки используют Symbol.for для общих меток (React так помечает свои элементы).

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

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