- Const block scope
- Array declared with
const
has a block scope. 2 arrays with the same name, outside and inside a block, are not the same.
const names = ["Adam", "Ben", "Chris"];
alert (names[0]); // "Adam"
{
const names = ["Don", "Edward", "Frank"];
alert (names[0]); // "Don"
}
alert (names[0]); // "Adam"
- Array declared with
var
doesn't have a block scope.
var names = ["Adam", "Ben", "Chris"];
alert (names[0]); // "Adam"
{
var names = ["Don", "Edward", "Frank"];
alert (names[0]); // "Don"
}
alert (names[0]); // "Don"
- Redeclaring an array with
const
vs var
- Redeclaring an array with
const
is only allowed in different scope/block.
{
const names = ["Adam", "Ben", "Chris"];
const names = ["Adam", "Ben", "Chris"]; // Not allowed
}
const names = ["Adam", "Ben", "Chris"]; // Allowed
const names = ["Adam", "Ben", "Chris"]; // Not allowed
{
const names = ["Adam", "Ben", "Chris"]; // Allowed
}
- Redeclaring and reassigning an array with
var
is allowed anywhere.
var names = ["Adam", "Ben", "Chris"];
var names = ["Adam", "Ben", "Chris"]; // Allowed
names = ["Adam", "Ben", "Chris"]; // Allowed
- Redeclaring an array previously declared with
var
and now with const
not allowed.
var names = ["Adam", "Ben", "Chris"];
const names = ["Adam", "Ben", "Chris"]; // Not allowed
{
var names = ["Adam", "Ben", "Chris"]; // Allowed
const names = ["Adam", "Ben", "Chris"]; // Not allowed
}
- Redeclaring an array previously declared with
const
and now with var
not allowed.
const names = ["Adam", "Ben", "Chris"];
const names = ["Adam", "Ben", "Chris"]; // Not allowed
var names = ["Adam", "Ben", "Chris"]; // Not allowed
names = ["Adam", "Ben", "Chris"]; // Not allowed
{
const names = ["Adam", "Ben", "Chris"]; // Allowed
const names = ["Adam", "Ben", "Chris"]; // Not allowed
var names = ["Adam", "Ben", "Chris"]; // Not allowed
names = ["Adam", "Ben", "Chris"]; // Not allowed
}