Answer
t.me/js_testОтвет:
ReferenceError: Cannot access 'user' before initialization
Обьяснение:
Ошибка появляется, потому что точка с запятой пропущена после user = {...}.
JavaScript не вставляет автоматически точку с запятой перед круглой скобкой (user.go)(), поэтому читает этот код так:
let user = { go:... }(user.go)()
Теперь мы тоже можем увидеть, что такое объединённое выражение синтаксически является вызовом объекта { go: ... } как функции с аргументом (user.go). И это происходит в той же строчке с объявлением переменной let user, т.е. объект user ещё даже не определён, поэтому получается ошибка.
Код для проверки:
const user = {
name: 'Джон',
go: function () {
console.log(this.name);
},
}
(user.go)()