Почему console.log(obj.s) выводит в консоль undefined?

99
24 июня 2021, 12:00

Есть такой кусочек кода.

var obj = {
    a: 1
};
console.log(obj.s) 

Как я понимаю, я создал один объект. Под него зарезервировался кусочек памяти, в который поместили поле a со значением равным 1. Т.е. больше в этом кусочке памяти ничего нет. Соответственно, при console.log(obj.s) я ожидал увидеть в консоли ReferenceError. Однако при обращении к несуществующему полю выводит undefined, как будто поле s у объекта есть, но ему не присвоено значени. Что я упустил в своих рассуждениях?

Answer 1

Вы инициализировали объект obj с параметрами {a: 1}. Получается что объект obj существует, и вы можете из любой точки кода, после его объявляения создать\удалить\изменить любое любое его свойство(которое разрешено менять). К примеру:

var obj = {
    a: 1
};
obj.hello = 'Hello!';
console.log(obj);  // Выведет: {a: 1, hello: 'Hello!'}

В вашем случае вы выводите console.log(obj.s), когда s вы еще не определили, что и означает undefined.

READ ALSO
Как удалить div при скролле страницы?

Как удалить div при скролле страницы?

Как удалить блок, например, с классомclass1? При скролле страницы вниз или вверх

96
Не работает подменю

Не работает подменю

Доброй ночиЕсть выпадающее меню и по плану когда наводишь на Produst - Desctop cправа должно появится скрытое подменю drop-menu2

183
В каком сегменте программы находится таблица виртуальных функций класса?

В каком сегменте программы находится таблица виртуальных функций класса?

Имеется одиночный класс с одной виртуальной функцией, не чисто-виртуальной

149
Как работает оператор [] в std::shared_ptr

Как работает оператор [] в std::shared_ptr

Пытаюсь получить доступ к элементу массива через его указатель, объявленный как shared_ptr так:

94