var scope = "I am global";
function whatismyscope(){
var scope = "I am just a local";
function func() {return scope;}
return func;
}
whatismyscope()()
Вышеприведенный код вернет «Я просто локальный». Он не вернется «Я глобальный». Поскольку функция func () подсчитывает, где была изначально определена, которая находится в рамках функции whatismyscope.
Она не будет беспокоиться о том, что она называется (глобальная область / изнутри другой функции) поэтому глобальное значение области I глобально не будет напечатано.
Это называется лексическим охватом, где « функции выполняются с использованием цепочки областей действия, которая действовала, когда они были определены " - согласно Руководству по определению JavaScript.
Лексический охват - очень очень мощная концепция.
Надеюсь, это поможет ..:)