Let в JavaScript
- Предыдущая страница JS переменные
- Следующая страница JS Const
ECMAScript 2015
ECMAScript 2015 ввел два важных новых ключевых слова JavaScript:let
和 const
.
Эти ключевые слова в JavaScript предоставляют блоковую область действия (Блоковая область действия) переменные (и константы).
До ES2015 в JavaScript было только два типа области действия:全局作用域和函数作用域.
全局作用域
ГлобальнаяПеременные, объявленные (вне функции), имеют全局作用域.
Пример
var carName = "porsche"; // Этот код может использовать carName function myFunction() { // Этот код также может использовать carName }
ГлобальнаяПеременные могут быть доступны в любом месте программы JavaScript.
函数作用域
ЛокальнаяПеременные, объявленные (внутри функции), имеют函数作用域.
Пример
// Этот код не может использовать carName function myFunction() { var carName = "porsche"; // code here CAN use carName } // Этот код не может использовать carName
ЛокальнаяПеременные могут быть доступны только в функции, в которой они объявлены.
Блоковая область действия JavaScript
через var
Переменные, объявленные ключевыми словами, не имеют блоковойОбласть действия.
В блоке {} Переменные, объявленные внутри блока, могут быть доступны снаружи блока.
Пример
{ var x = 10; } // Здесь можно использовать x
До ES2015 в JavaScript не было блокового области действия.
Можно использовать let
Ключевые слова объявляют переменные с блоковым областью действия.
В блоке {} Переменные, объявленные внутри блока, не могут быть доступными снаружи блока:
Пример
{ let x = 10; } // Здесь нельзя использовать x
Переопределение переменных
Использование var
Ключевое слово повторного определения переменных вызывает проблемы.
Переопределение переменных в блоке также повторяет определение переменных за пределами блока:
Пример
var x = 10; // Здесь x равно 10 { var x = 6; // Здесь x равно 6 } // Здесь x равно 6
Использование let
Ключевое слово повторного определения переменных решает эту проблему.
Переопределение переменных в блоке не повторяет определение переменных за пределами блока:
Пример
var x = 10; // Здесь x равно 10 { let x = 6; // Здесь x равно 6 } // Здесь x равно 10
Поддержка браузеров
Internet Explorer 11 и более ранние версии не поддерживают полностью let
ключевые слова.
В таблице определены первые полностью поддерживаемые let
Браузерная версия ключевых слов:
Chrome 49 | IE / Edge 12 | Firefox 44 | Safari 11 | Opera 36 |
2016 года 3 марта | 2015 года 7 июля | 2015 года 1 января | 2017 года 9 сентября | 2016 года 3 марта |
循环作用域
在循环中使用 var
:
Пример
var i = 7; for (var i = 0; i < 10; i++) { // 一些语句 } // 此处,i 为 10
在循环中使用 let
:
Пример
let i = 7; for (let i = 0; i < 10; i++) { // 一些语句 } // 此处 i 为 7
在第一个例子中,在循环中使用的变量使用 var
重新声明了循环之外的变量。
在第二个例子中,在循环中使用的变量使用 let
并没有重新声明循环外的变量。
如果在循环中用 let
声明了变量 i,那么只有在循环内,变量 i 才是可见的。
函数作用域
在函数内声明变量时,使用 var
和 let
很相似。
它们都有函数作用域:
function myFunction() { var carName = "porsche"; // 函数作用域 } function myFunction() { let carName = "porsche"; // 函数作用域 }
全局作用域
如果在块外声明声明,那么 var
和 let
也很相似。
它们都拥有全局作用域:
var x = 10; // 全局作用域 let y = 6; // 全局作用域
HTML 中的全局变量
使用 JavaScript 的情况下,全局作用域是 JavaScript 环境。
在 HTML 中,全局作用域是 window 对象。
через var
关键词定义的全局变量属于 window 对象:
Пример
var carName = "porsche"; // 此处的代码可使用 window.carName
через let
关键词定义的全局变量不属于 window 对象:
Пример
let carName = "porsche"; // 此处的代码不可使用 window.carName
重新声明
允许在程序的任何位置使用 var
重新声明 JavaScript 变量:
Пример
var x = 10; // 现在,x 为 10 var x = 6; // 现在,x 为 6
в одной и той же области видимости или в одном и том же блоке, через let
повторное объявление var
Переменные не разрешены:
Пример
var x = 10; // 允许 let x = 6; // 不允许 { var x = 10; // 允许 let x = 6; // 不允许 }
в одной и той же области видимости или в одном и том же блоке, через let
повторное объявление let
Переменные не разрешены:
Пример
let x = 10; // Разрешено let x = 6; // 不允许 { let x = 10; // Разрешено let x = 6; // 不允许 }
в одной и той же области видимости или в одном и том же блоке, через var
повторное объявление let
Переменные не разрешены:
Пример
let x = 10; // Разрешено var x = 6; // Запрещено { let x = 10; // Разрешено var x = 6; // Запрещено }
в различных областьях видимости или блока, через let
Повторное объявление переменных разрешено:
Пример
let x = 6; // Разрешено { let x = 7; // Разрешено } { let x = 8; // Разрешено }
Подъем
через var
Объявленные переменные будутПодъемдо вершины. Если вы не знаете, что такое подъем (Hoisting), изучите нашу главу о подъеме.
Вы можете использовать переменную до ее объявления:
Пример
// В этом месте вы можете использовать carName var carName;
через let
Определенные переменные не поднимаются на вершину.
в объявлении let
Использование переменной до ее объявления приведет к ошибке ReferenceError.
Переменные находятся в "временной смерти" с начала блока до его объявления:
Пример
// В этом месте вы не можете использовать carName let carName;
- Предыдущая страница JS переменные
- Следующая страница JS Const