1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
---
title: 'TypeError: invalid assignment to const "x"(недопустимое назначение const "x")'
slug: Web/JavaScript/Reference/Errors/Invalid_const_assignment
translation_of: Web/JavaScript/Reference/Errors/Invalid_const_assignment
---
<div>{{jsSidebar("Errors")}}</div>
<h2 id="Сообщение">Сообщение</h2>
<pre class="syntaxbox">TypeError: недопустимое назначение const "x" (Firefox)
TypeError: присвоение переменной константы. (Chrome)
TypeError: присвоение const (Edge)
TypeError: повторное объявление const 'x' (IE)
</pre>
<h2 id="Тип_ошибки">Тип ошибки</h2>
<p>{{jsxref("TypeError")}}</p>
<h2 id="Что_пошло_не_так">Что пошло не так?</h2>
<p>Константа-это значение, которое не может быть изменено программой в обычном исполнении. Он не может быть изменён путём повторного назначения и не может быть повторно объявлен. В JavaScript, константы объявляются с помощью ключевого слова const.</p>
<h2 id="Примеры">Примеры</h2>
<h3 id="Недопустимое_повторное_объявление">Недопустимое повторное объявление</h3>
<p>Assigning a value to the same constant name in the same block-scope will throw.</p>
<pre class="brush: js example-bad">const COLUMNS = 80;
// ...
COLUMNS = 120; // TypeError: invalid assignment to const `COLUMNS'</pre>
<h3 id="Решение_проблемы">Решение проблемы</h3>
<p>Есть несколько вариантов, чтобы исправить эту ошибку. Проверьте, что должно было быть достигнуто с рассматриваемой константой.</p>
<h4 id="Переназовите">Переназовите</h4>
<p>Если вы хотели объявить другую константу, выберите другое имя и переименовать. Это имя константы уже используется в этой области.</p>
<pre class="brush: js example-good">const COLUMNS = 80;
const WIDE_COLUMNS = 120;</pre>
<h4 id="const_let_или_var"><code>const</code>, <code>let</code> или <code>var</code>?</h4>
<p>Не используйте const, если вы не хотели объявлять константу. Возможно, вы хотели объявить переменную в области блока с let или глобальную переменную с var.</p>
<pre class="brush: js example-good">let columns = 80;
// ...
let columns = 120;
</pre>
<h4 id="Обзор">Обзор</h4>
<p>Проверить, если вы находитесь в правильной области. Должна ли эта константа появиться в этой области или она должна была появиться в функции, например?</p>
<pre class="brush: js example-good">const COLUMNS = 80;
function setupBigScreenEnvironment() {
const COLUMNS = 120;
}</pre>
<h3 id="const_и_неизменность"><code>const</code> и неизменность</h3>
<p>Объявление const создаёт ссылку только для чтения на значение. Это не означает, что значение, которое он содержит, является неизменяемым, просто идентификатор переменной не может быть переназначен. Например, если содержимое является объектом, это означает, что сам объект все ещё может быть изменён. Это означает, что нельзя изменить значение, хранящееся в переменной:</p>
<pre class="brush: js example-bad">const obj = {foo: 'bar'};
obj = {foo: 'baz'}; // TypeError: invalid assignment to const `obj'
</pre>
<p>Но можно изменить свойства в переменной:</p>
<pre class="brush: js example-good">obj.foo = 'baz';
obj; // Object { foo: "baz" }</pre>
<h2 id="Смотрите_также">Смотрите также</h2>
<ul>
<li><code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/const">const</a></code></li>
<li><code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/let">let</a></code></li>
<li><code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/var">var</a></code></li>
</ul>
|