Есть такой кусочек кода.
var obj = {
a: 1
};
console.log(obj.s)
Как я понимаю, я создал один объект. Под него зарезервировался кусочек памяти, в который поместили поле a со значением равным 1. Т.е. больше в этом кусочке памяти ничего нет. Соответственно, при console.log(obj.s) я ожидал увидеть в консоли ReferenceError. Однако при обращении к несуществующему полю выводит undefined, как будто поле s у объекта есть, но ему не присвоено значени.
Что я упустил в своих рассуждениях?
Вы инициализировали объект obj с параметрами {a: 1}. Получается что объект obj существует, и вы можете из любой точки кода, после его объявляения создать\удалить\изменить любое любое его свойство(которое разрешено менять). К примеру:
var obj = {
a: 1
};
obj.hello = 'Hello!';
console.log(obj); // Выведет: {a: 1, hello: 'Hello!'}
В вашем случае вы выводите console.log(obj.s), когда s вы еще не определили, что и означает undefined.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости