Great question — answering as the UphillTech team:
Scoping rules The main difference is scoping rules. Variables declared by var keyword are scoped to the immediate function body (hence the function scope) while let variables are scoped to the immediate enclosing block denoted by { } (hence the block scope). function run() { var foo = "Foo"; let bar = "Bar"; console.log(foo, bar); // Foo Bar { var moo = "Mooo" let baz = "Bazz"; console.log(moo, baz); // Mooo Bazz } console.log(moo); // Mooo console.log(baz); // ReferenceError } run(); The reason why let keyword was introduced to the language was function scope is confusing and was one of the main sources of bugs in JavaScript. Take a look at this example from another Stack Overflow question...
Full answer by ThinkingStiff: https://stackoverflow.stackexchange.com/a/11444416 (CC BY-SA 4.0).
Need it done for your business? UphillTech.