
JavaScript allows us to declare variable using var, let and const. The last one const is simple and straight forward. Let start with that.
The value of a constant can't be changed through reassignment. Well is that not the point while declaring it as a "const"
If you run the following example you will see the error:
const pi = 3.14;console.log(pi);pi = 3.14159; // gives error
The var and let allows us to declare variable i.e. the values can be updated, const is not supposed for that.
Declaration and Scope
Variables with var and their scope
var allows global of local scope based where they are declared declaration inside functions is local outside is global
Variables with var in JavaScript
var myname = "Dexter" // global declaration
function printmyname() { var mylength = myname.length; // accessing myname inside function console.log("Name length is: "+mylength)}
console.log(myname)
printmyname() console.log(mylength) // gives error as mylength is local to the function
Re-deceleration and reassignment
var allows re-declaration and reassignment of variable
var mynumber = 42 // declareconsole.log(number) // 42
var mynumber = 84 // re-decelerationconsole.log(number) // 84
mynumber = 168 // reassignment
Variables with let and their scope
With let can have a global, local, or block scope.
Also let does not allow re-declaration, this avoids by mistake usage of same variable name for other purpose in long pieces of codes. Though reassignment is allowed.
let myname = "Dexter" // global scope
function printmyname() { var mylength = myname.length; // mylength is local scope if(mylength < 10) { let minlength = 10 // block scoped var requiredlength = 12 // local scope console.log("Name length is: "+mylength+" it should be atleast "+minlength) } console.log("Required length is "+requiredlength) // should be printed console.log("Minimum length is "+minlength) // error as it is block scoped }
console.log(myname) // prints value of myname printmyname() // one message, one error and one requiredlengthconsole.log(mylength) // error local scoped
Scope of const
const are similar to let in regards to scope. A value declared with const should not be updated or will be allowed to be updated.
Hoisting:
- var declarations are processed before any code within the script is executed
- Irrespective of where they occur in a script
- Declaring a variable anywhere in the code is equivalent to declaring it at the top.
- i.e. a variable can appear to be used before it's declared.
- This behavior is called hoisting
- As it appears that the variable declaration is moved to the top
- Of the function
- static initialization block
- or script source in which it occurs.
- As it appears that the variable declaration is moved to the top
a = 2var a
Is as good as saying
var aa = 2
It is recommended to always declare variables at the top of their scope.
Only a variable's declaration is hoisted, not its initialization
Initialization of a variable will happen only when the assignment statement is reached.
The variable remains undefined (but declared) till that time.
function foo() { console.log(bar); // undefined var bar = 111; console.log(bar); // 111}
Is as good as writing
function foo() { var bar; console.log(bar); // undefined bar = 111; console.log(bar); // 111}
To avoid such issues make sure variable is declared and assigned with a value.
Note:
var is considered deprecated and only let should be used.

Add new comment