Странное поведение при объявлении переменной в функции
У меня есть некоторый код, вот его упрощенный смысл:
async function func(){
*1 часть кода*
data = await other_func() // без let
*2 часть кода* // эта часть не выполнится
return true // просто рандомный ответ
}
Так вот, функция работает нормально, возвращает некоторый ответ, но после определения переменной data 2 часть кода не выполняется. Ошибку не выдаёт, всё нормально работает, за исключением того, что 2 часть просто "проглатывается". Как оказалось я забыл объявить переменную через "let", после простановки его перед переменной data, всё начало корректно работать.
async function func(){
*1 часть кода*
let data = await other_func() // добавил let
*2 часть кода* // а теперь эта часть выполнится
return true // просто рандомный ответ
}
Чем объясняется такое странное поведение? Почему ошибку синтаксиса не выдало, а просто пропустило кусок кода вплоть до return?