Ключевое слово const было введено в ES6 (2015)
Переменные, определенные с помощью const, не могут быть переобъявлены
Переменные, определенные с помощью const, не могут быть переназначены
Переменные, определенные с помощью const, имеют область блока
Переменную const нельзя переназначить:
const PI = 3.141592653589793;
PI = 3.14; // This will give an error
PI = PI + 10; // This will also give an errorПопробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript const</h2>
<p id="demo"></p>
<script>
try {
const PI = 3.141592653589793;
PI = 3.14;
}
catch (err) {
document.getElementById("demo").innerHTML = err;
}
</script>
</body>
</html>
Переменным const JavaScript должно быть присвоено значение при их объявлении:
const PI = 3.14159265359;const PI;
PI = 3.14159265359;Всегда объявляйте переменную с помощью const, если вы это знаете значение не следует менять.
Используйте const, когда объявляете:
Новый массив
Новый объект
Новая функция
Новое регулярное выражение
Ключевое слово const немного вводит в заблуждение.
Он не определяет постоянное значение. Он определяет постоянную ссылку на значение.
Из-за этого вы НЕ МОЖЕТЕ:
Переназначить постоянное значение
Переназначить постоянный массив
Переназначить постоянный объект
Но вы можете:
Изменить элементы постоянного массива
Изменить свойства постоянного объекта
Вы можете изменить элементы постоянного массива:
// 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");Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript const</h2>
<p>Declaring a constant array does NOT make the elements unchangeable:</p>
<p id="demo"></p>
<script>
// Create an Array:
const cars = ["Saab", "Volvo", "BMW"];
// Change an element:
cars[0] = "Toyota";
// Add an element:
cars.push("Audi");
// Display the Array:
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Но вы НЕ можете переназначить массив:
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERRORПопробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript const</h2>
<p>You can NOT reassign a constant array:</p>
<p id="demo"></p>
<script>
try {
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"];
}
catch (err) {
document.getElementById("demo").innerHTML = err;
}
</script>
</body>
</html>
Вы можете изменить свойства постоянного объекта:
// You can create a const object:
const car = {type:"Fiat", model:"500", color:"white"};
// You can change a property:
car.color = "red";
// You can add a property:
car.owner = "Johnson";Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript const</h2>
<p>Declaring a constant object does NOT make the objects properties unchangeable:</p>
<p id="demo"></p>
<script>
// Create an object:
const car = {type:"Fiat", model:"500", color:"white"};
// Change a property:
car.color = "red";
// Add a property:
car.owner = "Johnson";
// Display the property:
document.getElementById("demo").innerHTML = "Car owner is " + car.owner;
</script>
</body>
</html>
Но вы НЕ можете переназначить объект:
const car = {type:"Fiat", model:"500", color:"white"};
car = {type:"Volvo", model:"EX60", color:"red"}; //
ERRORПопробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript const</h2>
<p>You can NOT reassign a constant object:</p>
<p id="demo"></p>
<script>
try {
const car = {type:"Fiat", model:"500", color:"white"};
car = {type:"Volvo", model:"EX60", color:"red"};
}
catch (err) {
document.getElementById("demo").innerHTML = err;
}
</script>
</body>
</html>
| Scope | Redeclare | Reassign | Hoisted | Binds this | |
| var | No | Yes | Yes | Yes | Yes |
| let | Yes | No | Yes | No | No |
| const | Yes | No | No | No | No |
let и const иметь область действия блока.
let и const не может быть переобъявлен.
let и const должен быть объявлен перед использованием.
let и const не привязывается к этому.
let и const не подняты.
var не обязательно объявлять.
var поднимается.
var привязывается к этому.
Ключевые слова let и const не поддерживается в Internet Explorer 11 или более ранних версиях.
В следующей таблице указаны первые версии браузера с полной поддержкой:
| Chrome 49 | Edge 12 | Firefox 36 | Safari 11 | Opera 36 |
| Mar, 2016 | Jul, 2015 | Jan, 2015 | Sep, 2017 | Mar, 2016 |
Объявление переменной с помощью const аналогично let когда дело доходит до Области блока.
В этом примере x, объявленный в блоке, не совпадает с x, объявленным вне блока:
const x = 10;
// Here x is 10
{
const x = 2;
// Here x is 2
}
// Here x is 10Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScropt const variables has block scope</h2>
<p id="demo"></p>
<script>
const x = 10;
// Here x is 10
{
const x = 2;
// Here x is 2
}
// Here x is 10
document.getElementById("demo").innerHTML = "x is " + x;
</script>
</body>
</html>
Вы можете узнать больше об области действия блока в главе Область действия JavaScript.
Переобъявление переменной JavaScript var разрешено. в любом месте программы:
var x = 2; // Allowed
var x = 3; // Allowed
x = 4; // AllowedПовторное объявление существующего var или let переменная const в той же области недопустима:
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
}
Переназначение существующей переменной const в той же области действия не допускается:
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
}
Переобъявление переменной с помощью const в другой области видимости или в другом блоке разрешено:
const x = 2; // Allowed
{ const x = 3; // Allowed
}
{
const x = 4; // Allowed
}Переменные, определенные с помощью var, поднимаются наверх. и может быть инициализирован в любое время.
Значение: вы можете использовать переменную до ее объявления:
Хорошо:
carName = "Volvo";
var carName;Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Hoisting</h2>
<p>With <b>var</b>, you can use a variable before it is declared:</p>
<p id="demo"></p>
<script>
carName = "Volvo";
document.getElementById("demo").innerHTML = carName;
var carName;
</script>
</body>
</html>
Если вы хотите узнать больше о подъеме, изучите главу «Поднятие JavaScript». <p>Переменные, определенные с помощью const, также поднимаются наверх, но не инициализирован.
Значение: использование переменной const до ее объявления приведет к ReferenceError:
alert (carName);
const carName = "Volvo";Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Hoisting</h2>
<p>With <b>const</b>, you cannot use a variable before it is declared:</p>
<p id="demo"></p>
<script>
try {
alert(carName);
const carName = "Volvo";
}
catch (err) {
document.getElementById("demo").innerHTML = err;
}
</script>
</body>
</html>