Выбор ответа Middle Современный синтаксис обновлено
Symbol и Symbol.for
Вопрос
Что выведет код?
console.log(Symbol('id') === Symbol('id'), Symbol.for('id') === Symbol.for('id'));
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: false true. Каждый вызов Symbol('id') создаёт новый уникальный символ, строка лишь описание для отладки, поэтому false.
Варианты ответа
true truefalse trueправильный ответfalse falsetrue false
Разбор
Каждый вызов Symbol('id') создаёт новый уникальный символ, строка лишь описание для отладки, поэтому false. Symbol.for('id') работает через глобальный реестр: первый вызов создаёт символ, следующие с тем же ключом возвращают его же, поэтому true. Реестр общий для всех realm-ов, в том числе для iframe на странице, поэтому библиотеки используют Symbol.for для общих меток (React так помечает свои элементы).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.