Limiting a variable's scope can help avoid subtle and potentially annoying errors. For example, if you use a let variable inside an if block, it'll only be accessible by code inside the block. If you use var inside an if block, your variable will be visible to the entire function.
In the scenario with var/let I need to grok the code in order to tell which variables are visible in my current scope.
if(something) var foo = 1;It also throws and error if it's used before it's declared.
Let basically fix some minor issues that hard-bitten JavaScript developers have learned to avoid.