Область - одна из самых важных понятий JavaScript. Если вы хотите хорошо изучить JavaScript, вам необходимо понять принципы работы с масштабами JavaScript и цепочки объема. Сегодняшняя статья представляет подробное объяснение примеров с масштабами JavaScript, надеясь помочь всем изучить JavaScript лучше.
Любой язык программирования имеет концепцию масштаба. Проще говоря, Scope - это доступный объем переменных и функций, то есть область управления наглядностью и жизненным циклом переменных и функций. В JavaScript объем переменных является глобальным и локальным.
1. Без областей на уровне блоков в JavaScript
В Java или C#есть прицел на уровне блоков, то есть скобки также являются прицелом.
public static void main () {if (1 == 1) {string name = "Seven";} System.out.println (name);} // Сообщать об ошибке Public static void main () {if (1 == 1) {string name = "Семь";Без применения на уровне блоков в JavaScript
function main () {if (1 == 1) {var name = 'Seven';} console.log (name);} // Выход: семь2. Javascript принимает область функции
В JavaScript каждая функция действует как область применения, и переменные во внутренней области не могут быть доступны извне.
function main () {var innervalue = 'Seven';} main (); console.log (innervalue); // Ошибка: Uncauth referengror: innerValue не определен3. Цепочка применения JavaScript
Поскольку каждая функция в JavaScript является областью применения, если появляется вложенная функция функции, появится цепочка областей.
xo = 'alex'; function func () {var xo = "Seven"; function inner () {var xo = 'alvin'; console.log (xo);} inner ();} func ();Например, приведенный выше код появляется в цепочке областей, состоящей из трех областей. Если появится цепочка применения, при поиске переменных появится заказ. Для приведенного выше примера:
Когда Console.log (xo) выполняется, его порядок поиска состоит в том, чтобы искать изнутри снаружи в соответствии с приоритетом цепочки сфера. Если внутреннего слоя не существует, он постепенно будет смотреть вверх, пока не будет найдено никаких исключений.
4. Цепочка сфера действия JavaScript была создана до выполнения
Объем JavaScript был создан до его выполнения. Когда это будет выполнено в будущем, вам нужно искать только в соответствии с цепочкой областей.
Пример 1:
xo = 'alex'; function func () {var xo = "Seven"; function inner () {console.log (xo);} return inner;} var ret = func (); ret (); // Результат выхода: семьПриведенный выше код уже существует до того, как функция будет вызвана:
• Global Scope-> Func Function Scope-> Объем внутренней функции
При выполнении [ret ();], поскольку он относится к внутренней функции, цепочка областей этой функции была определена как: глобальная область сфера действия -> Функциональная область функции -> Внутренняя область функции, поэтому при выполнении [ret ();] переменные будут обнаружены на основе существующей цепочки объема.
Пример 2:
xo = 'alex'; function func () {var xo = "eirc"; function inner () {console.log (xo);} xo = 'Seven'; return inner;} var ret = func (); ret (); // Результат вывода: семьПриведенный выше код имеет ту же цель, что и пример 1, и он также подчеркивает, что цепочка областей уже существует до того, как функция будет вызвана:
• Global Scope-> Func Function Scope-> Объем внутренней функции
В отличие от выполнения [var ret = func ();] значение переменной xo в масштабах фонда было сброшено на «Семь» из «Eric», поэтому при выполнении [ret ();] позже вы можете найти только «семь».
Пример 3:
xo = 'alex'; <br> function bar () {console.log (xo);} function func () {var xo = "Seven"; return bar;} var ret = func (); ret (); // Результат выхода: alexВ приведенном выше коде две цепочки объема были созданы до выполнения функции:
• Глобальная область сферы функции Bar
• Глобальная область функции функции Func
При выполнении [ret ();], RET относится к функции стержня, и цепочка сферы функции BAR уже существует: Global Scope -> Область функции BAR, поэтому при выполнении он будет искать на основе существующей цепочки объема.
5. Заявление заранее
Если вы не создаете переменные и используете их непосредственно в JavaScript, сообщается об ошибке:
console.log (xxoo); // Ошибка: Uncaught referenceError: xxOO не определено
В JavaScript, если значение создается без назначения значения, значение не определен, например:
var xxoo; console.log (xxoo); // Выход: не определен
Если это написано в функции:
function foo () {console.log (xo); var xo = 'Seven';} foo (); // output: не определенПриведенный выше код не сообщает об ошибке, но выводит неопределенные. Причина в том, что до выполнения функций JavaScript они объявят все переменные в них без присвоения значений. Следовательно, эквивалентно приведенному примеру, что функция уже выполнила VAR XO, когда «предварительно скомпилирован»; Таким образом, вывод вышеприведенного кода не определен.
Выше приведено подробное объяснение образца JavaScript Scope, представленной редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!