ECMAScript 2015 (ES6)
In 2015, JavaScript introduced an important new keyword:
const
.
It has become a common practice to declare arrays using
const
:
Example
const cars = ["Saab", "Volvo", "BMW"];
Try it Yourself »
Cannot be Reassigned
An array declared with
const
cannot be reassigned:
Example
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERROR
Try it Yourself »
Arrays are Not Constants
The keyword
const
is a little misleading.
It does NOT define a constant array. It defines a constant reference to an array.
Because of this, we can still change the elements of a constant array.
Elements Can be Reassigned
You can change the elements of a constant array:
Example
// 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");
Try it Yourself »
Browser Support
The
const
keyword is not supported in Internet Explorer 10 or earlier.
The following table defines the first browser versions with full support for the
const
keyword:
Assigned when Declared
JavaScript
const
variables must be assigned a value when they are declared:
Meaning: An array declared with
const
must be initialized when it is declared.
Using
const
without initializing the array is a syntax
error:
Example
This will not work:
const cars;
cars = ["Saab", "Volvo", "BMW"];
Arrays declared with
var
can be initialized at any time.
You can even use the array before it is declared:
Example
This is OK:
cars = ["Saab", "Volvo", "BMW"];
var cars;
Try it Yourself »
Const Block Scope
An array declared with
const
has
Block Scope
.
An array declared in a block is not the same as an array declared outside the block:
Example
const cars = ["Saab", "Volvo", "BMW"];
// Here cars[0] is "Saab"
const cars = ["Toyota", "Volvo", "BMW"];
// Here cars[0] is "Toyota"
// Here cars[0] is
"Saab"
Try it Yourself »
An array declared with
var
does not have block scope:
Example
var cars = ["Saab", "Volvo", "BMW"];
// Here cars[0] is "Saab"
var cars = ["Toyota", "Volvo", "BMW"];
// Here cars[0] is "Toyota"
// Here cars[0] is
"Toyota"
Try it Yourself »
You can learn more about Block Scope in the chapter:
JavaScript Scope
.
Redeclaring Arrays
Redeclaring an array declared with
var
is allowed anywhere in a program:
Example
var cars = ["Volvo", "BMW"]; // Allowed
var cars = ["Toyota", "BMW"]; // Allowed
cars = ["Volvo", "Saab"]; // Allowed
Redeclaring or reassigning an array to
const
, in the same scope, or in
the same block, is not allowed:
Example
var cars = ["Volvo", "BMW"]; // Allowed
const cars = ["Volvo", "BMW"]; // Not allowed
var cars = ["Volvo", "BMW"]; // Allowed
const cars = ["Volvo", "BMW"]; // Not allowed
Redeclaring or reassigning an existing
const
array, in the same scope, or in
the same block, is not allowed:
Example
const cars = ["Volvo", "BMW"]; // Allowed
const cars = ["Volvo", "BMW"]; // Not allowed
var cars = ["Volvo", "BMW"]; // Not allowed
cars = ["Volvo", "BMW"]; // Not allowed
const cars = ["Volvo", "BMW"]; // Allowed
const cars = ["Volvo", "BMW"]; // Not allowed
var cars = ["Volvo", "BMW"]; // Not allowed
cars = ["Volvo", "BMW"]; // Not allowed
Redeclaring an array with
const
, in another scope, or in another block, is allowed:
Example
const cars = ["Volvo", "BMW"]; // Allowed
const cars = ["Volvo", "BMW"]; // Allowed
const cars = ["Volvo", "BMW"]; // Allowed
Complete Array Reference
For a complete Array reference, go to our:
Complete JavaScript Array Reference
.
The reference contains descriptions and examples of all Array
properties and methods.
Contact Sales
If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]
Report Error
If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]
W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning.
Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness
of all content. While using W3Schools, you agree to have read and accepted our
terms of use
,
cookie and privacy policy
.
W3Schools is Powered by W3.CSS
.