Область видимости переменных

Область видимости переменных Javascript

Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье вы узнали про преобразование типов в Javascript. В данной статье я бы хотел поговорить про важную тему для любого языка программирования — это область видимости переменных. В языке Javascript существует понятие глобального объекта, который определяет понятие глобального контекста исполнения кода. При работе с HTML-страницами, браузер создаёт глобальный объект. Если мы в скрипте не создаём функции, то мы имеем дело с контекстом глобального объекта. Давайте на примере покажу, что это значит:

var a = 5;
alert(a);

Здесь мы создали переменную a и проинициализировали её значением 5. Затем с помощью метода alert(a) выводим её. В данном случае переменная a была создана в контексте глобального контекста, и метод alert(a) также выполняется в этом контексте. В Javascript есть ключевое слово this, которое указывает на текущий объект, т.е. это тот объект, в рамках которого вызывается переменная или функция. В нашем случае мы можем написать следующим образом:

var a = 5;
this.alert(this.a);

В данном случае ключевое слово this указывает на глобальный объект.

С понятием функций и глобального объекта связаны понятия контекста выполнения и области видимости переменных. С глобальными переменными мы разобрались. Локальные переменные — это те переменные, которые создаются внутри тела функции с помощью оператора var. Такие переменные видны только внутри тела функции. Другими словами нельзя обратиться к этой переменной вне тела функции, в котором эта переменная была определена. Для названия локальных переменных можно использовать имена, которые были использованы для глобальных переменных или внутри других функций. Имя локальной переменной должно быть уникально только в контексте своей функции.

Переменная, которая был объявлена без оператора var, автоматически будет считаться глобальной. Присвоив такой переменной некоторое значение, мы присвоим это значение глобальной переменной. Если глобальной переменной с таким именем не было, она будет создана и ее значение будет равно новому значению. Следует избегать определение локальных переменных без оператора var, так как это может привести к различным ошибкам, разобраться в которых порой бывает трудно.

Если внутри функции мы обращаемся к переменной с некоторым именем, эта переменная сначала ищется среди локальных переменных. Если такая переменная среди локальных переменных этой функции (ее контексте) не найдена, следует переход в контекст внешней функции и поиск среди переменных этого контекста. Эта операция происходит, пока программа не доходит до глобального объекта. Вот в этом и заключается особенность области видимости переменных в Javascript от других языков программирования, к примеру от C#.

Пример:

var a = 10; //a – глобальная переменная 
function second_function(b) //b – локальная переменная (аргумент)
{	var d = 3; //d – локальная переменная 
	function first_function() 
	{ 
		var c = 8; //c – локальная переменная 
		alert(c); //найдена среди локальных переменных функции first_function 
		alert(d); //найдена среди локальных переменных функции second_function 
		alert(a); //найдена среди глобальных переменных 
	} 
	first_function(); 
} 
second_function();

В данной статье вы узнали про область видимости переменных на примере Javascript.

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *