Какая разница между переменными объявленными через let и var в javascript?

Какая разница между переменными объявленными через let и var в javascript? Какой вариант объявления переменной лучше использовать?

переменная созданная с использованием let будет доступна только в блоке где она была объявленна, например:

function MyFunc()
{
    // какой-то код
    for(let i = 0; i < 10; i++)
    { 
        // какой-то код
    }
    // какой-то код
}

переменная i в таком случае будет доступна только в цикле, а если бы она создавалась с помощью var, тогда она была бы видна и вне цикла (как до, так и после).

Как мне сказали: "Используй то, что более удобно лично для тебя и вообще let переменные придумали для программистов, которые переходят из таких языков как Java или C# на JS, поскольку в тех языках все переменные являются блочными (они видны только в тех блоках, где были созданы) и использование var переменных меняет эту логику". От себя хочу добавить, что если переменная нужна лишь на определённом участке кода, тогда создайте её используя let, иначе var

а если я в функции напишу следующее:

function MyFunc()
{
    a = 20;
    console.log(a)
    // какой-то код
}

какой переменной будет a? код работает

image

в таком случае у Вас переменная a будет объявлена как var переменная за пределами функции