Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since сентябрь 2016 г..
Директива let объявляет переменную с блочной областью видимости с возможностью инициализировать её значением.
Имя переменной. Может использоваться любой допустимый идентификатор.
value1, value2, …, valueNЗначение переменной. Любое допустимое выражение.
Директива let позволяет объявить локальную переменную с областью видимости, ограниченной текущим блоком кода . В отличие от ключевого слова var, которое объявляет переменную глобально или локально во всей функции, независимо от области блока.
Объяснение, почему было выбрано название "let" можно найти здесь.
Областью видимости переменных, объявленных ключевым словом let, является блок, в котором они объявлены, и все его подблоки. В этом работа директива let схожа с работой директивы var. Основная разница заключается в том, что областью видимости переменной, объявленной директивой var, является вся функция, в которой она объявлена:
let иногда делает код чище при использовании вложенных функций.
Пример выше будет выполнен как и ожидается, так как пять экземпляров внутренней функции (анонимной) будут ссылаться на пять разных экземпляров переменной i. Пример будет выполнен неверно, если заменить директиву let на var, или удалить переменную i из параметров вложенной функции и использовать внешнюю переменную i во внутренней функции.
На верхнем уровне скриптов и функций let, в отличии от var, не создаёт свойства на глобальном объекте. Например:
В выводе программы будет отображено слово "global_x" для this.x, но undefined для this.y.
При взаимодействии с конструкторами можно использовать выражение let чтобы открыть доступ к одному или нескольким приватным членам через использование замыканий:
Эта техника позволяет получить только "статичное" приватное состояние - в примере выше, все экземпляры полученные из конструктора SomeConstructor будут ссылаться на одну и ту же область видимости privateScope.
Повторное объявление той же переменной в том же блоке или функции приведёт к выбросу исключения SyntaxError.
В стандарте ECMAScript 2015 переменные, объявленные директивой let, переносятся в начало блока. Но если вы сошлётесь в блоке на переменную, до того как она объявлена директивой let, то это приведёт к выбросу исключения ReferenceError, потому что переменная находится во "временной мёртвой зоне" с начала блока и до места её объявления. (В отличии от переменной, объявленной через var, которая просто будет содержать значение undefined)
Вы можете столкнуться с ошибкой в операторах блока switch, так как он имеет только один подблок.
Вы можете использовать ключевое слово let для привязки переменных к локальной области видимости цикла for. Разница с использованием var в заголовке цикла for, заключается в том, что переменные объявленные var, будут видны во всей функции, в которой находится этот цикл.
В этом примере expr2, *expr3, statement *заключены в неявный блок, который содержит блок локальных переменных, объявленных конструкцией let expr1. Пример приведён выше.
Когда let используется внутри блока, то область видимости переменной ограничивается этим блоком. Напомним, что отличие заключается в том, что областью видимости переменных, объявленных директивой var, является вся функция, в которой они были объявлены.
Вы можете использовать ключевое слово let для привязки переменных к локальной области видимости цикла for, вместо того что бы использовать глобальные переменные (объявленные с помощью var).
Предупреждение: Поддержка let блоков была убрана в Gecko 44 Firefox bug 1023609.
let блок предоставляет способ, ассоциировать значения с переменными внутри области видимости этого блока, без влияния на значения переменных с теми же именами вне этого блока.
let блок предоставляет локальную область видимости для переменных. Работа его заключается в привязке нуля или более переменных к области видимости этого блока кода, другими словами, он является блоком операторов. Отметим, что область видимости переменных, объявленных директивой var, в блоке let, будет той же самой, что и если бы эти переменные были объявлены вне блока let, иными словами областью видимости таких переменных по-прежнему является функция. Скобки в блоке let являются обязательными. Опускание их приведёт к синтаксической ошибке.
Правила для этого блока кода аналогичны как и для любого другого блока кода в JavaScript. Он может содержать свои локальные переменные, объявленные let.
Областью видимости переменных, объявленных директивой let, в блоке let является сам блок и все подблоки в нем, если они не содержат объявлений переменных с теми же именами.
Предупреждение: Поддержка let была убрана в Gecko 41 Firefox bug 1023609.
let выражение позволяет объявить переменные с областью видимости ограниченной одним выражением.
Вы можете использовать let для объявления переменных, областью видимости которых является только одно выражение:
В данном let выражении:
*expr *оборачивается в неявный блок.
| ECMAScript® 2027 Language Specification # sec-let-and-const-declarations |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 27 окт. 2025 г. by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.