Answer

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

Report Page