> Что происходит при попытке присвоить свойство примитиву в JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Яндекс

Стек: JavaScript

> Пример ответа

При попытке присвоить свойство примитиву (числу, строке, булеву значению, null, undefined, символу, BigInt) в JavaScript происходит следующее:

  1. Для примитивов, отличных от null и undefined: JavaScript временно оборачивает примитив в соответствующий объект-обёртку (Number, String, Boolean, Symbol, BigInt). Присвоение свойства происходит этому временному объекту, который сразу же уничтожается после выполнения операции. В результате присвоение не имеет эффекта - свойство не сохраняется, и при повторном обращении к нему вы получите undefined.

    JAVASCRIPT
    let str = "hello";
    str.foo = "bar";
    console.log(str.foo); // undefined
  2. Для null и undefined: Попытка присвоить свойство вызывает ошибку TypeError, так как у этих значений нет объектной обёртки.

    JAVASCRIPT
    let x = null;
    x.prop = 1; // TypeError: Cannot set properties of null

Важно: В строгом режиме ("use strict") ошибка возникает и для других примитивов (кроме null и undefined), если попытаться записать свойство. В нестрогом режиме операция молча игнорируется.

Это поведение связано с тем, что примитивы - неизменяемые значения, и у них нет собственных свойств.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью