var a;
if (true) {
a = 5;
function a() {}
a = 0;
console.log(a)
}
console.log(a)
Я бачив код вище, функція оголошена в {}. Я думаю, що він надрукував би 0 0, але він надрукував 0 5
Чи відповідає це на ваше запитання? Яка точна семантика функцій рівня блоку в ES6?
—
Jonas Wilms
У суворому режимі він реєструється
—
Окреме виконання
0 undefined.
@certainPerformance добре, це зрозуміло, але я не можу пояснити, що
—
Jonas Wilms
a = 5залишає блок. За словами Бергі в дупі, function aбудуть підніматися.
Здається, що мінлива блоку локалізованої області скопіюється у зовнішній блок при досягненні декларації функції.
—
Йонас