返回函数的作用域链

时间:2017-09-24 20:02:13

标签: javascript scope closures scope-chain

我一直在研究函数对象的[[scope]]属性。[[scope]]除了全局对象外还应该包含所有外部函数的变量对象。

这里,从Inner函数返回的最内层函数应该包含分配给它的作用域链的Inner+Outer+Global变量对象。但它只有Outer+Global个变量对象分配给它的作用域链。

为什么返回函数的[[scope]]链中缺少Inner函数,而该函数碰巧是返回函数的直接父函数。对此行为的任何合适解释?

function Outer(){
   var a = 10
   return function Inner(){
     var b = 22
     console.log('ball')
     return function(){

        console.log(a+b)
     }

  }

}

var oppa = Outer()()
console.dir(oppa)

结果:

enter image description here

0 个答案:

没有答案