函数是一种特殊的对象,他有".name"属性
例:
function hh(){}
hh.name;//"hh"
还有一个[[scope]]属性,但是这个属性只供JavaScript引擎访问,它就是作用域,它储存的运行期上下文的集合,这个集合成链式链接,就叫做作用域链。
function a(){
function b(){
function c(){
}
c();
}
b();
}
a();
/*
a 定义 a.[[scope]] ---> 0:GO
a 执行 a.[[scope]] ---> 0:aAO
1:GO
b 定义 b.[[scope]] ---> 0:aAO
1:GO
b 执行 b.[[scope]] ---> 0:bAO
1:aAO
2:GO
c 定义 c.[[scope]] ---> 0:bAO
1:aAO
2:GO
c 执行 c.[[scope]] ---> 0:cAO
1:bAO
2:aAO
3:GO
底层函数是站在最近父级函数的作用域上诞生的
*/