@kolykisel

Почему на «превью» у age 25, а когда открываешь, то 45 (в первом случае)?

Здравствуйте,
Столкнулся с не понятным для меня поведением JS ECMA 6,
5f00b8d46cd49628144019.png
Объект, когда я только его определил, ввел вот такие данные:
const user = {
	name: 'Nikola',
	age: 25
}
console.log(user)

Но, когда я переопределил значение у ключа "age" и вывел опять в консоль:
user.age = 45
console.log(user)

На изображении видно, пока я не раскрыл в консоли объект, показывает как надо, все логично, сначала 25, потом 45, но когда раскрываю в консоли объект (когда я его первый раз вызвал), показывает 45, объясните в чем дело? Почему там не 25?
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
FinGanapre
@FinGanapre
Когда вы "раскрываете" объект, вам показывают его текущее значение. Наведите на иконку с информацией (i) рядом с объектом в консоли "Value below was evaluated just now". Что означает, что значение ниже было вычислено в данный момент. В тот самый момент, когда вы раскрыли объект.
При этом, значение определяется при первом раскрытии объекта.
Запустите этот код:
const user = {
  name: 'Nikola',
  age: 25
}
console.log(user)

setTimeout(() => {
  user.age = 45
  console.log(user)
}, 5000)


Значение в объекте будет изменено через 5 секунд.
При первом запуске кода, сразу раскройте первый вывод в консоль. Дождитесь, пока измениться значение и произойдёт второй. Можете снова открывать и закрывать первый вывод в консоль, его значение не будет меняться и будет составлять 25.

Запустите код ещё раз, но в этот раз не открывайте первый вывод в консоль. После второго вывода откройте оба. Вы увидите, что и там и там значение будет составлять 45.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы