JavaScript Const
The const keyword was introduced in [ES6 (2015)](jses6.asp)
The const keyword was introduced in ES6 (2015)
Variables defined with const cannot be Redeclared
Variables defined with const cannot be Reassigned
Variables defined with const have Block Scope
Share
Cannot be Reassigned
A variable defined with the const keyword cannot be reassigned:
Example
Example Code
javascriptconst PI = 3.141592653589793;
PI = 3.14; // This will give an error
PI = PI + 10; // This will also give an errorMust be Assigned
JavaScript const variables must be assigned a value when they are declared:
Correct
Example Code
javascriptconst PI = 3.14159265359;Incorrect
Example Code
javascriptconst PI;
PI = 3.14159265359;Constant Objects and Arrays
The keyword const is a little misleading.
It does not define a constant value. It defines a constant reference to a value.
Because of this you can NOT:
- Reassign a constant value
- Reassign a constant array
- Reassign a constant object
- Change the elements of constant array
- Change the properties of constant object
Constant Arrays
You can change the elements of a constant array:
Example
Example Code
javascript// You can create a constant array:
const cars = ["Saab", "Volvo", "BMW"];
// You can change an element:
cars[0] = "Toyota";
// You can add an element:
cars.push("Audi");But you can NOT reassign the array:
Example
Example Code
javascriptconst cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERRORConstant Objects
You can change the properties of a constant object:
Example
Example Code
javascript// You can create a const object:
const car = {type:"Fiat", model:"500", color:"white"};
// You can change a property:
car.color = "red";
// You can add a property:
car.owner = "Johnson";But you can NOT reassign the object:
Example
Example Code
javascriptconst car = {type:"Fiat", model:"500", color:"white"};
car = {type:"Volvo", model:"EX60", color:"red"} //
ERRORDifference Between var, let and const
The difference between var, let, and const lies in scoping mechanisms, reassignment rules, and JavaScript hoisting.
| Feature | var | let | const |
|---|---|---|---|
| Scope | Function or global scope | Block-scope { } | Block-scope { } |
| Reassignment | Can be updated | Can be updated | Cannot be updated |
| Redeclaration | Can be redeclared | Cannot be redeclared | Cannot be redeclared |
| Hoisting | Initialized as undefined | Hoisted, not initialized | Hoisted, not initialized |
Block Scope
Declaring a variable with const is similar to let when it comes to Block Scope.
The x declared in the block, in this example, is not the same as the x declared outside the block:
Example
Example Code
javascriptconst x = 10;
// Here x is 10
{
const x = 2;
// Here x is 2
}
// Here x is 10You can learn more about block scope in the chapter JavaScript Scope.
Redeclaring
Redeclaring a JavaScript var variable is allowed anywhere in a program:
Example
Example Code
javascriptvar x = 2; // Allowed
var x = 3; // Allowed
x = 4; // AllowedRedeclaring an existing var or let variable to const, in the same scope, is not allowed:
Example
Example Code
javascriptvar x = 2; // Allowed
const x = 2; // Not allowed
{
let x = 2; // Allowed
const x = 2; // Not allowed
}
{
const x = 2; // Allowed
const x = 2; // Not allowed
}Reassigning an existing const variable, in the same scope, is not allowed:
Example
Example Code
javascriptconst x = 2; // Allowed
x = 2; // Not allowed
var x = 2; // Not allowed
let x = 2; // Not allowed
const x = 2; // Not allowed
{
const x = 2; // Allowed
x = 2;
// Not allowed
var x = 2;
// Not allowed
let x = 2;
// Not allowed
const x = 2; // Not allowed
}Redeclaring a variable with const, in another scope, or in another block, is allowed:
Example
Example Code
javascriptconst x = 2; // Allowed
{
const x = 3; // Allowed
}
{
const x = 4; // Allowed
}Hoisting
Variables defined with var are hoisted to the top and can be initialized at any time.
Meaning: You can use the variable before it is declared:
Example
Example Code
javascriptcarName = "Volvo";
var carName;If you want to learn more about hoisting, study the chapter JavaScript Hoisting. Variables defined with const are also hoisted to the top, but not initialized.
Meaning: Using a const variable before it is declared will result in a ReferenceError:
Example
Example Code
javascriptalert (carName);
const carName = "Volvo";Interactive Code Examples
JS Example 1
javascriptconst PI = 3.141592653589793;
PI = 3.14; // This will give an error
PI = PI + 10; // This will also give an errorCorrect
javascriptconst PI = 3.14159265359;Incorrect
javascriptconst PI;
PI = 3.14159265359;JS Example 4
javascript// You can create a constant array:
const cars = ["Saab", "Volvo", "BMW"];
// You can change an element:
cars[0] = "Toyota";
// You can add an element:
cars.push("Audi");JS Example 5
javascriptconst cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERRORJS Example 6
javascript// You can create a const object:
const car = {type:"Fiat", model:"500", color:"white"};
// You can change a property:
car.color = "red";
// You can add a property:
car.owner = "Johnson";