JS深入(变量提升)

背景知识

JS深入(变量提升)_第1张图片
只要关注"生成变量对象"和"变量赋值"就行了,其它暂时不是重点。


JS深入(变量提升)_第2张图片
只要搞清楚"function:"(函数)声明的优先级大于"var:"(变量)声明就行了,其它暂时不是重点。变量对象创建过程其实就是所谓的"预编译"过程

变量提升

函数的实际执行顺序和文档顺序是有差异的。函数中的函数声明和变量声明会被置顶。


JS深入(变量提升)_第3张图片
文档顺序


JS深入(变量提升)_第4张图片
实际执行顺序(函数与变量的声明被置顶,其它语句顺序不变)

函数声明的优先级大于变量声明的优先级体现于两点

1.实际执行顺序中,先进行函数声明,再进行变量声明。(如上例)

2.当遇到变量声明时变量名与某函数名相同的情况时,该变量放弃声明。

比如:


JS深入(变量提升)_第5张图片
文档顺序


JS深入(变量提升)_第6张图片
实际执行顺序

你可能感兴趣的:(JS深入(变量提升))