Почему в JS нельзя присвоить значение отсутствующего свойства объекта, но можно присвоить значение отсутствующего вложенного свойства объекта?

Допустим есть некий объект:
const someObject = { param: 'value' }

Почему код
someObject.another.param = 'value'

Будет ругаться на то, что param не определено, но если определить свойство another:
someObject.another = {}

То ругаться не будет. Ведь в обоих случаях вложенного свойства param нет. Объясните как это работает
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
@Nwton
Прежде чем присвоить, компилятор ищет место присвоения.

someObject - знаю где искать (this), нашел
.another - знаю где искать (someObject), не нашел
.param - не знаю где искать, ошибка

someObject - знаю где искать (this), нашел
.another - знаю где искать (someObject), не нашел

Будет ругаться на то, что param не определено
Подозреваю, что компилятор будет ругаться не на то, что param не определен, а на то, что не определен another (undefined).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
yellow79
@yellow79
Senior Software Engineer
в первом варианте вы пытаетесь искать квартиру в несуществующем доме, во втором варианте ищете несуществующую в доме квартиру. как бы первый вариант не имеет смысла, поэтому и ошибка
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы