Completion requirements
Examples
Basic const usage
Constants can be declared with uppercase or lowercase, but a common convention is to use all-uppercase letters.
// define MY_FAV as a constant and give it the value 7 const MY_FAV = 7; // this will throw an error - Uncaught TypeError: Assignment to constant variable. MY_FAV = 20; // MY_FAV is 7 console.log('my favorite number is: ' + MY_FAV); // trying to redeclare a constant throws an error // Uncaught SyntaxError: Identifier 'MY_FAV' has already been declared const MY_FAV = 20; // the name MY_FAV is reserved for constant above, so this will fail too var MY_FAV = 20; // this throws an error too let MY_FAV = 20;
Block scoping
It's important to note the nature of block scoping.
if (MY_FAV === 7) { // this is fine and creates a block scoped MY_FAV variable // (works equally well with let to declare a block scoped non const variable) let MY_FAV = 20; // MY_FAV is now 20 console.log('my favorite number is ' + MY_FAV); // this gets hoisted into the global context and throws an error var MY_FAV = 20; } // MY_FAV is still 7 console.log('my favorite number is ' + MY_FAV);
const needs to be initialized
// throws an error // Uncaught SyntaxError: Missing initializer in const declaration const FOO;
const in objects and arrays
const
also works on objects and arrays. Attempting to overwrite the object throws an error "Assignment to constant variable".
const MY_OBJECT = { key: 'value' }; MY_OBJECT = { OTHER_KEY: 'value' };
However, object keys are not protected, so the following statement is executed without problem.
MY_OBJECT.key = 'otherValue';
You would need to use Object.freeze()
to make an object immutable.
The same applies to arrays. Assigning a new array to the variable throws an error "Assignment to constant variable".
const MY_ARRAY = []; MY_ARRAY = ['B'];
Still, it's possible to push items into the array and thus mutate it.
MY_ARRAY.push('A'); // ["A"]