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)();