Types of JavaScript variable declarations:
- Var keyword
- Let keyword
- Const keyword
- Undeclared variable (Ex: a =2;)
Scope of declarations:
- Var keyword
- Limited to function level.
- Can be used in strict mode and non-strict mode.
- For example, function scopeOfVar(){ var a; }, here the scope is limited to function scopeOfVar().
- If the variable declared with var inside of a block in a function, then also that variable has scope throughout the function.
- But the variable can be accessed before it’s declaration, if it accessed before declaration will give a ‘undefined’ as the value, which is called as ‘hoisting’.
- Usage var variableName [= value];
- Let keyword
- Should be used only if strict mode is enabled.
- Let will have scope only in the block it is declared.
- Commonly used for small blocks or scopes.
- Usage let variableName [= value];
- Const keyword
- Should be used only if strict mode is enabled.
- Const will have scope only in the block it is declared.
- Const should be initialized while declaring.
- It can be an object also like var and let.
- Usage: const variableName = constant value;
- Undeclared variable (Ex: a =2;)
- Should be used only in non-strict mode.
- Will throw reference error if used in strict mode.
- If a variable is declared without any keyword in any scope will become a member of global object, i.e., undeclared variable is always in global scope.
- It is not suggested as a best practice to use like this.
- Usage: variableName = value;