变量提升
当js执行代码的时候,会生成执行环境,只要代码不写在函数的内部,就是全局环境,代码写在函数内部,就是函数执行环境。
生成执行环境的时候,会有两个阶段,第一个阶段叫做创建阶段,第二段阶段为代码执行阶段。在第一个阶段的时候,js解释器会找出需要提升的变量和函数,并在内存中为其开辟好空间,变量值声明并且赋值undefined存在内存中,如果是函数的话,会将整个函数存在内存中。
在提升的过程中,函数的提升是优于变量的提升的,并且相同的函数会覆盖上一个函数。
var 声明的变量可以在声明之前使用,但是输出的变量值为undefined,let声明的变量在声明之前不能使用,会报错。这并不是let变量没有提升,let变量在第一阶段的时候内存为其开辟好了空间,但是因为这种声明特性不能在声明前使用。

浙公网安备 33010602011771号