Раскрываем области видимости JavaScript

Раскрываем области видимости JavaScript

Введение:

Области видимости — одно из фундаментальных понятий JavaScript. Многие разработчики сталкиваются с проблемой понимания поведения переменных.

Если вы тоже сталкиваетесь с этой проблемой, не волнуйтесь! Вы находитесь в правильном месте!

В этом блоге мы рассмотрим, что такое область видимости и какие существуют ее типы с примерами.

Что такое область видимости?

Область видимости в JavaScript относится к текущему контексту кода, который определяет доступность переменных в JavaScript.

Мы можем обращаться к переменным только в пределах их областей видимости, иначе будет сгенерирована ошибка.

Не поняли?

Не волнуйтесь!

Давайте разберемся в этом с помощью примеров.

var Hero = 'Iron Man';

function Wish() {
	console.log(`My Favourite hero is ${Hero}`);
	var Villain = 'Thanos';
}
Wish(); //Invokes the function
console.log(`I was scared of ${Villain}`);

Итак, какой будет результат выполнения этого кода?

// My Favourite hero is Iron Man
// Uncaught ReferencaeError: Villain is not defined

Почему же появляется сообщение “Villain не определен”, несмотря на то, что мы объявили эту переменную? Вот где в игру вступает скоуп.

Позвольте мне объяснить, почему это происходит. Мы определили переменную Villain с помощью функции, поэтому область видимости этой переменной ограничена функцией, что означает, что мы можем обратиться к переменной только внутри этой функции.

Типы областей видимости

В JavaScript существует три основных типа областей видимости:

Глобальная область видимости:

Если переменная объявлена вне функции, то у нее глобальная область видимости. К ней можно обратиться из любой части вашего кода на JavaScript.

let name = 'Arindam'; // global scope

function func1() {
	console.log(name); // Arindam
}

function func2() {
	console.log(name); // Arindam
}

Область видимости функции:

Переменная, объявленная внутри функции, имеет область видимости функции. К ней можно обратиться только из этой функции.

function func1() {
	let name = 'Ronaldo'; // function scope

	console.log(name); // Ronaldo
}

console.log(name); // Throws a ReferenceError

Область видимости блока:

Если вы объявляете переменную с помощью let и const, она доступна только в пределах блока, в котором она объявлена - между фигурными скобками { }. Давайте разберем это на примерах:

{
	let name = 'Roni';
}

console.log(name); // Throws a ReferenceError

Вызывает ошибку ссылки, потому что областью видимости переменной являются фигурные скобки.

Теперь перейдем к следующему примеру.

{
	var name = 'Messi';
}

console.log(name);

Каков будет вывод здесь?

Неопределенный??

Нет, вывод будет “Messi”. Это происходит потому, что переменная, определенная с ключевым словом var, не имеет блочной области видимости.

💡 Примечание: Var имеет ’область видимости функции’, в то время как let и const имеют ‘блочную область видимости’.

Заключение:

Если вы нашли этот блог полезным, пожалуйста, подумайте о том, чтобы поделиться им с другими, кому он может пригодиться. Вы также можете следить за мной, чтобы получать больше контента по JavaScript и другим темам веб-разработки.

Спасибо за чтение :)