- 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
}