网上的回答大多数回复如下,意思就是变量先提升,而后函数声明
1、创建AO对象,执行期上下文
2、寻找函数的形参和变量声明,将变量和形参名作为AO对象的属性名,值设定为undefined.
3、将形参和实参相统一,即更改形参后的undefined为具体的形参值。
4、寻找函数中的函数声明,将函数名作为AO属性名,值为函数体。
但是我在《你不知道的JavaScript(上卷)》看到了这样的一段话:函数会首先被提升,然后才是变量
那书上跟网上的说法就矛盾了, 或许是本人理解偏颇,尽管两者希望有大佬指教一二。