1

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

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

为什么Inner返回函数的 [[scope]] 链中没有函数,而返回函数恰好是返回函数的直接父级。对这种行为有什么合适的解释吗?

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)

结果 :

在此处输入图像描述

4

0 回答 0