背景知识

只要关注"生成变量对象"和"变量赋值"就行了,其它暂时不是重点。

只要搞清楚"function:"(函数)声明的优先级大于"var:"(变量)声明就行了,其它暂时不是重点。变量对象创建过程其实就是所谓的"预编译"过程
变量提升
函数的实际执行顺序和文档顺序是有差异的。函数中的函数声明和变量声明会被置顶。

文档顺序

实际执行顺序(函数与变量的声明被置顶,其它语句顺序不变)
函数声明的优先级大于变量声明的优先级体现于两点
1.实际执行顺序中,先进行函数声明,再进行变量声明。(如上例)
2.当遇到变量声明时变量名与某函数名相同的情况时,该变量放弃声明。
比如:

文档顺序

实际执行顺序