Объясните почему код выводит 1 , а не 10?
Наткнулся на задачу и не могу найти более подробного ответа.
let a = 1;
function b() {
a = 10;
return;
function a() {
}
}
b();
console.log(a);
Почему консоль выводит 1. Ведь идет изменение значения внешней переменной внутри функции.
Ответы (1 шт):
Автор решения: Grundy
→ Ссылка
В данном случае внутри функции b описана функция a, которая, благодаря function declaration hoisting поднимается вверх.
Таким образом любое обращение к индентификатору a, внутри функции b, будет обращением к внутренней функции, а не глобальной переменной.
Проверить это можно, просто выведя значение a
let a = 1;
function b() {
console.log(a);
return;
function a() { }
}
b();
console.log(a);