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