Лексическая область

Как вы, возможно, слышали, в javascript у нас есть очень важная, но базовая концепция под названием Lexical Scope, которая относится к объявлению переменных и тому, как мы можем получить к ним доступ через наш код, если вы хотите освоить более сложные концепции, такие как замыкания или кэширование и сборщики мусора. , и т. д., вам определенно нужно очень хорошо знать области видимости в javascript!

Приступим к делу, у нас есть две основные области видимости в javascript:

1- Глобальный охват

2- Локальная область

Мы также можем разделить локальную область на две разные области:

1- Объем функций

2- Область блока

Теперь, как мы собираемся их определить? каковы различия? и впереди еще много вопросов, поэтому я уверен, что вы хотели бы увидеть это в коде без лишних слов.

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

Если вы посмотрите на результаты, вы увидите, что внутри глобальной области видимости все происходит так, как мы ожидаем, но если мы попадем внутрь области действия функции и внутри нее области блока, мы объявили 3 переменные с var, let и const. это единственные способы объявить переменную в javascript.

Как видите, я объявил переменные a, b и c в примере функции, а также то же самое с блоком внутри функции, знаете что? в области функции единственное, что изменилось, это переменная a, которая является объявленной переменной var, но переменные let и const показывают свои собственные результаты из своих собственных областей, но var изменилась в области действия функции, так как мы повторно объявили это внутри области блока!

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

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

1- Глобальная область: самая верхняя область в вашем коде, которая не является функцией или областью блока.

2- Локальная область: Каждая функция или блок внутри вашего кода имеет свою собственную локальную область.

Итак, как теперь мы собираемся объяснить разницу между var и const и обойти их области видимости? ну, мы можем сказать, что var — это переменная с функциональной областью видимости, которая привязана к своей первой верхней области видимости функции в процессе подъема перед выполнением кода javascript, но let и const — это переменные с областью действия блока, которые привязаны к своему первому верхнему блоку.

Вот почему, если вы повторно объявите var в функции, она изменится, но если мы повторно объявим let и const внутри блока, это не повлияет на верхний блок или функцию, потому что он не будет искать после того, как найдет свой первый рядом с областью верхнего блока.

Заключение:

Одной из причин, по которой мы всегда должны избегать использования var, является причина, которую мы достигли выше: переменная Global Scope нежелательна в JavaScript!

Может быть очень сложно отлаживать ваш код, если вы сталкиваетесь с ошибками, введенными в ваш код с помощью объявлений var, потому что это может повлиять на ваш код, а также может быть объявлено несколько раз в вашем коде, что невозможно с помощью let и const, потому что это вызовет синтаксис ошибка.

Используйте const, если вы не хотите повторно назначать переменную через свой код, потому что, хотя let является заблокированной переменной области видимости, ее можно переназначить вместе с вашим кодом javascript, и если вам это не нужно, это может привести к ошибкам в будущее.