в следующем коде, если я использую 'var', он выводит «undefined», а если я использую 'let', он выдаёт ошибку «x не определен»
function foo() {
function bar() {
console.info(x);
}
bar();
var x = 14;
}
foo();
может кто-нибудь объяснить это почему
Короткий ответ, не углубляясь в спецификацию языка, - никогда не используйте переменные до их объявления. Тогда вам не нужно беспокоиться о различиях.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


И хорошее прочтение о подъем в Javascript поможет