Answer
t.me/js_testОтвет:
33 или обшибка
Объяснение:
Присваивание b = 33 без уточнения var, let или const интерпретируется, как присваивание значения уже существующему имени из более высоких областей видимости. Если же имя не существует ни в одной из областей видимости, как в этом случае, поведение отличается в зависимости от того, исполняется ли данный код в strict mode.
Если strict mode включен (т.е. объявлен "use strict" в этой функции или в более высокой области видимости, или если используется система модулей es6, и т.д.), то попытка присваивания несуществующему имени вызовет исключение ReferenceError: assignment to undeclared variable b.
Если же strict mode отключен, то присваивание создаст новое имя в наивысшей области видимости. В случае браузеров ей является window, поэтому появится новый аттрибут window.b === 33, а в случае node.js высшей областью видимости является global, поэтому появится новый аттрибут global.b === 3.
Спасибо подписчику toriningen за хорошее объяснение.
Код:
function myFunc() {
let a = (b = 33)
}
myFunc()
console.log(b)