Область действия JavaScript
Область видимости определяет доступность (видимость) переменных.
JavaScript имеет 3 типа области видимости:
- Область блока
- Объем функций
- Глобальный охват
Область блока
До ES6 (2015) у JavaScript были только Global Scope и Function Scope .
ES6 представил два важных новых ключевых слова JavaScript: let
и const
.
Эти два ключевых слова обеспечивают область действия блока в JavaScript.
К переменным, объявленным внутри блока { }, нельзя получить доступ снаружи блока:
Пример
{
let x = 2;
}
// x can NOT be used here
Переменные, объявленные с помощью var
ключевого слова, НЕ могут иметь область действия блока.
К переменным, объявленным внутри блока { }, можно получить доступ снаружи блока.
Пример
{
var x = 2;
}
// x CAN be used here
Локальная область
Переменные, объявленные в функции JavaScript, становятся ЛОКАЛЬНЫМИ для этой функции.
Пример
// code here can NOT use carName
function myFunction() {
let carName = "Volvo";
// code here CAN use carName
}
// code here can NOT use carName
Локальные переменные имеют область действия :
Доступ к ним возможен только из самой функции.
Поскольку локальные переменные распознаются только внутри своих функций, переменные с одинаковыми именами могут использоваться в разных функциях.
Локальные переменные создаются при запуске функции и удаляются по завершении функции.
Объем функций
В JavaScript есть область видимости функции: каждая функция создает новую область видимости.
Переменные, определенные внутри функции, недоступны (видимы) снаружи функции.
Переменные, объявленные с помощью var
, let
и const
очень похожи при объявлении внутри функции.
Все они имеют область действия :
function myFunction() {
var carName = "Volvo";
// Function Scope
}
function myFunction() {
let carName = "Volvo"; //
Function Scope
}
function myFunction() {
const carName = "Volvo"; //
Function Scope
}
Глобальные переменные JavaScript
Переменная, объявленная вне функции, становится GLOBAL .
Пример
let carName = "Volvo";
// code here can use carName
function myFunction() {
// code here can also use carName
}
Глобальная переменная имеет глобальную область видимости :
Все сценарии и функции на веб-странице могут получить к ней доступ.
Глобальный масштаб
Переменные, объявленные глобально (вне любой функции), имеют глобальную область видимости .
Доступ к глобальным переменным можно получить из любого места в программе JavaScript.
Переменные, объявленные с помощью var
, let
и const
очень похожи при объявлении вне блока.
Все они имеют глобальную область видимости :
var x = 2;
// Global scope
let x = 2; //
Global scope
const x = 2; //
Global scope
Переменные JavaScript
В JavaScript объекты и функции также являются переменными.
Область видимости определяет доступность переменных, объектов и функций из разных частей кода.
Автоматически глобальный
Если вы присвоите значение переменной, которая не была объявлена, она автоматически станет ГЛОБАЛЬНОЙ переменной.
В этом примере кода будет объявлена глобальная переменная carName
, даже если значение присваивается внутри функции.
Пример
myFunction();
// code here can use carName
function myFunction() {
carName = "Volvo";
}
Строгий режим
Все современные браузеры поддерживают запуск JavaScript в строгом режиме.
Вы узнаете больше о том, как использовать строгий режим, в следующей главе этого руководства.
В «строгом режиме» необъявленные переменные автоматически не становятся глобальными.
Глобальные переменные в HTML
В JavaScript глобальная область видимости — это среда JavaScript.
В HTML глобальная область видимости — это объект окна.
Глобальные переменные, определенные с помощью var
ключевого слова, принадлежат объекту окна:
Пример
var carName = "Volvo";
// code here
can use window.carName
Глобальные переменные, определенные с помощью let
ключевого слова, не принадлежат объекту окна:
Пример
let carName = "Volvo";
// code here can not use window.carName
Предупреждение
НЕ создавайте глобальные переменные, если вы не собираетесь это делать.
Ваши глобальные переменные (или функции) могут перезаписывать оконные переменные (или функции).
Любая функция, включая объект окна, может перезаписать ваши глобальные переменные и функции.
Время жизни переменных JavaScript
Время жизни переменной JavaScript начинается с момента ее объявления.
Функциональные (локальные) переменные удаляются, когда функция завершена.
В веб-браузере глобальные переменные удаляются при закрытии окна браузера (или вкладки).
Аргументы функции
Аргументы функций (параметры) работают как локальные переменные внутри функций.