Охват JavaScript всегда был точкой знания, который трудно понять в фронт-энде-разработке. Помните несколько слов о объеме 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) выполняется, его порядок поиска состоит в том, чтобы искать изнутри снаружи в соответствии с приоритетом цепочки сфера. Если внутреннего слоя не существует, он постепенно будет смотреть вверх, пока не будет найдено никаких исключений.
425762-20160707114743577-37359182.png
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'; function bar () {console.log (xo);} function func () {var xo = "Seven"; return bar;} var ret = func (); ret (); // Результат выхода: alexВ приведенном выше коде две цепочки объема были созданы до выполнения функции:
Global Scope -> Bar Function Scope
Global Scope -> Func Function Scope
При выполнении [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 (классический) всего за пять предложений. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!