函数生成了就会有个属性[[scopes]]作用域“数组”(只能用引擎使用)
函数调用时生成AO对象 会把AO对象放在scopes
每次调用都会放在scopes前面(),【顶部】
每个函数scopes数组中天生就有一个AO对象 就是这个函数得上层得AO
举个例子吧:
fn(100)//AO:{n:undef==>100,a:undef==>20,function fm(){}} fn()//AO:{n:undef,a:undef==>20,function fm(){}}
函数有属性
length====>形参的属性
name anxxxxs
[[scoped]]
js对象有两种成员
一种是上文成员(js语法可以直接访问的成员)
一种是下文成员(底层语法访问的成员)
[[scopes]]括起来的成员名 就是下文成员
分析: