> Что происходит при попытке присвоить свойство примитиву в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Яндекс
Стек: JavaScript
> Пример ответа
При попытке присвоить свойство примитиву (числу, строке, булеву значению, null, undefined, символу, BigInt) в JavaScript происходит следующее:
-
Для примитивов, отличных от
nullиundefined: JavaScript временно оборачивает примитив в соответствующий объект-обёртку (Number,String,Boolean,Symbol,BigInt). Присвоение свойства происходит этому временному объекту, который сразу же уничтожается после выполнения операции. В результате присвоение не имеет эффекта - свойство не сохраняется, и при повторном обращении к нему вы получитеundefined.JAVASCRIPTlet str = "hello";str.foo = "bar";console.log(str.foo); // undefined -
Для
nullиundefined: Попытка присвоить свойство вызывает ошибкуTypeError, так как у этих значений нет объектной обёртки.JAVASCRIPTlet x = null;x.prop = 1; // TypeError: Cannot set properties of null
Важно: В строгом режиме ("use strict") ошибка возникает и для других примитивов (кроме null и undefined), если попытаться записать свойство. В нестрогом режиме операция молча игнорируется.
Это поведение связано с тем, что примитивы - неизменяемые значения, и у них нет собственных свойств.
> Похожие задачи по frontend
Что такое Redux, зачем он нужен и как устроен
Что такое лексическое окружение в JavaScript и как оно работает
Как работает Promise.all и как реализовать аналог с обработкой reject в JavaScript
Что такое AbortController и метод abort в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью