Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

const

Эта статья нуждается в редакционном обзоре. Как вы можете помочь.

Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.

Это экспериментальная технология, часть предложения Harmony (ECMAScript 6).
Поскольку спецификация этой технологии ещё не стабилизировалась, проверьте таблицу совместимости её использования в различных браузерах. Также обратите внимание, что синтаксис и поведение экспериментальной технологии могут быть изменены в будущих версиях браузеров в соответствии с изменениями в спецификации.

Общая информация

const создаёт новую именованную константу, доступную только для чтения. 

Синтаксис

const name1 = value1 [, name2 = value2 [, ... [, nameN = valueN]]];
nameN
Имя констаты. Подчиняется тем же правилам, что и имена обычных переменных.
valueN
Значение константы. Может быть любым из тех типов, которыми могут быть переменные.

Описание

Эта синтаксическая конструкция создаёт новую константу. Имена констант подчиняются тем же правилам что и обычные переменные. Значение константы нельзя менять/перезаписывать. Также её нельзя объявить заново.

Примеры

Ниже описаны примеры, демонстрирующие поведение const. Попробуйте их выполнить в консоли разработчика своего браузера. В Firefox и Chrome вы получите следуещее поведение:

// определим my_fav как константу и присвоим ей значение 7 
const my_fav = 7;

// данное присваивание будет проигнорировано Firefox и Chrome (но не в Safari)
my_fav = 20;

// напечатает 7
console.log("my favorite number is: " + my_fav);

// попробуем переопределить константу, будет выкинуто исключение или 
// просто проигнорировано (зависит от среды выполнения)
const my_fav = 20;

// имя my_fav зарезервированно константой выше, данная операция 
// выкинет исключение или будет проигнорированно
var my_fav = 20; 

// my_fav все еще имеет значение 7
console.log("my favorite number is " + my_fav);

Многие браузеры уже сегодня поддерживают константы, но не все из них  (в частности, Safari)  работают с ними как с константами. То есть вы можете использовать константы, чтобы показать другим разработчикам, что вы создаете неизменяемую переменную, но в настоящее время вы не можете полагаться на корректное поведение браузеров.

Спецификация

Спецификация Статус Комментарий
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'Let and Const Declarations' в этой спецификации.
Стандарт Initial definition.

Поддержка браузерами

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support ? ? 11 12.00 (maybe earlier) 5.1.7 (maybe earlier)

Reassignment fails

20 13 (13) ? ? ?
Temporal dead zone ? 35 (35) ? ? ?
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support ? ? ? ? ? ?
Reassignment fails ? ? ? ? ? ?
Temporal dead zone ? ? 35 (35) ? ? ?

Примечания

The current implementation of const in Firefox is a Mozilla-specific extension and is not part of ECMAScript 5.

It is supported in Firefox & Chrome (V8). As of Safari 5.1.7 and Opera 12.00, if you define a variable with const in these browsers, you can still change its value later. It is not supported in Internet Explorer 6-10, but is included in Internet Explorer 11.

The const keyword currently declares the constant in the function scope (like variables declared with var).

Firefox, at least since version 13, throws a TypeError if you redeclare a constant. None of the major browsers produce any notices or errors if you assign another value to a constant. The return value of such an operation is that of the new value assigned, but the reassignment is unsuccessful only in Firefox 13 and Chrome (at least since version 20).

const is defined in ECMAScript 6 (see above), but with different semantics. Similar to variables declared with the let statement, constants declared with const will be block-scoped, do not hoist, and throw a SyntaxError exception if code attempts to access the binding before it has been declared. This "temporal dead zone" for const has been added in Firefox 35. A tracking bug for const ES6 compliance is баг 950547.

Смотрите также

Метки документа и участники

 Внесли вклад в эту страницу: Grumvol, xfg, gibson, crvst, SphinxKnight, KiraAndMaxim
 Обновлялась последний раз: Grumvol,