Как обсуждалось здесь, определения функций могут использоваться до их определения. Но как только часть кода будет завершена в блок try, это перестает быть.
Отображается "Hello world":
hello();
function hello() { alert("Hello world"); }
Но это отображает "ReferenceError: hello не определено":
try {
hello();
function hello() { alert("Hello world"); }
} catch (err) {
alert(err);
}
Таким образом, есть явно что-то особенное о блоке try относительно объявлений функций. Есть ли способ обойти это поведение?