2018-11-20
2018-11-25 本文已影响0人
鱼丸_e560
作用域链的理解
概念:
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。