Before Understanding the difference b/w let and var. First understand the Scopes in JS.
Scopes - where to look the variables in the memory.
Note : Here companyName becomes accidental global and bind with window object .
Scope is A compile time process.
Var Hoisting in js
When JS Compiles all of your code, all variables using
var are lifted to the top of their scope, either on
Functional scope or global scope. This is called Hoisting.
Example:
console.log(‘My Name is ‘,myName);
var myName = ‘Brain Mentors’;
myName goes under window object.
Functions are also hoisted at the top.
Understanding Let
- Block Level Scope.
- Redeclaration the same variable in same function/block generates SyntaxError.
- TDZ (Temporal Dead Zone)
- Different let in different scope, but var use the same one.
Let is not global
Example:
Outside the loop if u try to access the i variable. i is under block level scope.
if you try with var
Note : let not use Lexical scope principle.
Temporal dead zone - TDZ
That's all Folks , See u in a next blog , Happy Learning 😎