DariaSS3003
@DariaSS3003

Почему консоль выводит это значение?

Друзья, есть JS код. Я в непонятках: почему консоль выводит 456. Объясните, пожалуйста

let dwayne = {};
let daniel = {
    firstName: 'Daniel',
};
let jason = {
    key: 'jason',
};

dwayne[daniel] = 123;
dwayne[jason] = 456;

console.log(dwayne[daniel]);
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Вы пытаетесь в качестве имени свойства использовать объект, а JS разрешает там только строки.
Объект приводится к строке и ваш код превращается в итоге вот в это:
dwayne['[object Object]'] = 123;
dwayne['[object Object]'] = 456;

console.log(dwayne['[object Object]']);

Думаю, тут уже понятно, почему результат именно такой.

При этом, если бы вы использовали другой синтаксис, то и результат был бы другим:
dwayne.daniel = 123; // аналог dwayne['daniel']
dwayne.jason = 456; // аналог dwayne['jason']

console.log(dwayne.daniel);

Но эти daniel и jason никак не связаны с одноимёнными объектами выше.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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