所谓的变量提升是指Javascript代码在执行过程中,Javascript引擎会把变量的声明部分和函数的声明部分提升到代码开头的行为,变量提升后会给变量默认一个undefined的值。之所以需要实现变量提升,是因为Javascript代码在执行之前需要编译
输入一段代码经过编译后会生成两部分内容:执行上下文和可执行代码
- 执行上下文是Javascript运行一段代码时的运行环境,在执行上下文中存在一个变量环境的对象,该对象中保存了变量提升的内容
- 代码中出现相同的变量或者函数时第二个重名的函数或者变量会将第一个函数或者变量覆盖掉