2018-11-20

作用域链的理解

概念:

       1:每执行某个函数,即进入新的作用域。
       2:使用变量或给变量赋值,变量应从自身的作用域下找,如找不到,则往上层作用域找。

例子:

var a= 1
function fn1() {
function fn2() {
console.log(a)
}
function fn3() {
var a =4
fn2()
}
var a =2
return fn3
}
求 var fn = fn1()
fn() 输出多少?
fn1 函数中声明了2个函数(fn2和fn3),同时声明了变量a=2,并return fn3函数;
fn=fn1,即fn=fn3,fn()即fn3();
fn3函数调用fn2函数;
fn2函数中没有变量a,便去fn1函数中寻找,var a = 2,所以fn()输出2。

你可能感兴趣的:(2018-11-20)