JavaScript Const
The word const started being used in JavaScript's ES6 version, which came out in 2015.
Variables that are set with const cannot be declared again.
Variables defined with const cannot be changed once they are set.
Variables that are set with const only exist within the block of code where they are defined.
Cannot be Reassigned
A const variable can't change its value once it's set:
Must be Assigned
In JavaScript, when you create a variable using the const keyword, you have to give it a value right when you make it:
Correct
const PI = 3.14159265359;
Incorrect
const PI;
PI = 3.14159265359;
When to use JavaScript const?
Whenever you're sure that a value won't change, use const to declare a variable.
Use const when you say:
- A new Array
- A new Object
- A new Function
- A new RegExp
Constant Objects and Arrays
The word const might confuse you a bit.
It doesn't set a fixed value. Instead, it sets a fixed way to refer 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
But you CAN:
Constant Arrays
You have the power to modify the parts of an unchanging list:
But you can't change the array's contents:
Constant Objects
You have the ability to modify the characteristics of an unchangeable object:
But you cannot change the object:
Difference Between var, let and const
| Scope | Redeclare | Reassign | Hoisted | Binds this | |
| var | No | Yes | Yes | Yes | Yes |
| let | Yes | No | Yes | No | No |
| const | Yes | No | No | No | No |
What is Good?
In JavaScript, let and const keywords create variables with block scope.
let and const cannot be declared again.
Declare let and const before using them.
let and const don't connect to this.
let and const aren't hoisted.
What is Not Good?
var does not have to be declared.
var is hoisted.
var binds to this.
Block Scope
Creating a variable using const is much like using let when it comes to block scope.
The x stated inside this block isn't the same as the x declared outside of it.
Redeclaring
You can change a JavaScript variable declared with var at any point in your code.
Example
var x = 2; // Allowed
var x = 3; // Allowed
x = 4; // Allowed
You can't change a variable from being var or let to const if it's already been declared in the same part of the code.
Example
var 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
}
Changing a constant variable that already exists in the same area of a program isn't allowed.
Example
const 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
}
Changing the value of a variable using const is okay if done in a different part of the code or within a different section of the program.
Example
const x = 2; // Allowed
{
const x = 3; // Allowed
}
{
const x = 4; // Allowed
}
Hoisting
Variables made with var go up to the top and can be set at any time.
Explanation: You're allowed to utilize the variable even if it hasn't been officially declared yet.
If you're interested in understanding hoisting better, check out the section on JavaScript Hoisting.
Variables made with const are lifted to the top but not set initially.
Meaning: If you try to use a const variable before declaring it, you'll get a ReferenceError:
CSS
Jquery