Функция берет глобальную переменную, хотя есть локальная
Доброе время суток. Подскажите куда копать... Есть такой код:
let name = 'John';
function printName() {
console.log(name);
}
setTimeout(() => {
let name = 'Peter';
printName();
}, 1000);
Я надеялся, что получу в консоли Peter, а он выводит John. Почему так? Ведь в локальной области видимости, где вызывают printName объявлена переменная name.
Ответы (1 шт):
Автор решения: DiD
→ Ссылка
Внутри функции printName
никакой переменной name
не объявлено. Поэтому значение берется из контекста, где в текущем варианте значение 'John'
.