JS变量提升
1. js会先把所有变量都声明好了之后,然后才进行赋值,并不是声明一个变量就赋值,再声明一个再赋值。js所谓变量提升,提升就是为了事先声明变量。中间包括函数声明
2. 在作用域中,不管变量和函数写在什么位置,所有变量会被整体提升到作用域顶部,所有函数也会被整体提升到作用域顶部,但是函数整体在变量整体的后面。
3.
变量运行(搜索)机制:
首先看,有没有局部作用域
如果有,查找是不是这个局部作用域定义的变量
如果不是,寻找上一级作用域,直到找到全局作用域
如果全局作用域也找不到这个变量,这个变量就是未定义的 undefined
实例如下:
2.
在变量提升过程中,函数声明也需要提升到变量后面,参考第二条,结果为 undefined ,0 ,1
3.
4.