
Как думаешь, получится у нас добавить поле user строке s или получим ошибку? Если нет, то что выведется на экран?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ответ на этот вопрос зависит добавлен ли флаг ’use strict’ твоему JS скрипту.
Возможные варианты:
undefinedесли'use strict'не был указан в скрипте- ошибка, если флаг был добавлен и выполнение происходит в строгом режиме
Почему же это происходит?
Во второй строке, когда ты пытаешься получить доступ к s.user, JavaScript под капотом создает объект обертку типа String.
И если ты используешь строгий режим, то попытка модификации такого объекта бросит ошибку.
Но без флага use strict ошибки не будет и поле user без проблем добавится к объекту обертке.
Но, несмотря на то, что при добавлении ошибки уже нет, на следующей строке нет и объекта обертки. Свойство user пропало и поэтому на экран выведется строка undefined.
ОТВЕТ: В JS нельзя добавлять новые поля примитивным значениям, таким как строки или числа. Результат будет зависеть от того, используется флаг 'use strict' или нет.