Answer
t.me/js_testОтвет:
"Джон" Ошибка(Undefined)
Объяснение:
В результате выполнения user.hi() мы получим "Джон". Логично, не правда ли?
Но почему же в результате выполнения (user.name == "Джон" ? user.hi : user.bye)() мы получаем ошибку?
В последней строчке кода используется условный оператор ?, который определяет, какой будет вызван метод (user.hi или user.bye) в зависимости от выполнения условия. В данном случае будет выбран user.hi.
Затем метод тут же вызывается с помощью скобок (). Но вызов не работает как положено!
Вы можете видеть, что при вызове будет ошибка, потому что значением "this" внутри функции становится undefined (полагаем, что у нас строгий режим).
Код для проверки:
let user = {
name: "Джон",
hi() { alert(this.name); },
bye() { alert("Пока"); }
};
user.hi();
(user.name == "Джон" ? user.hi : user.bye)();