笔记:变量声明的提升

  任何声明在某个作用域内的变量,都将附属于这个作用域。

  我们习惯性地将var a = 2;看做一个生命,而实际上JavaScript引擎并不这么认为。它将var a 和 a = 2 当作两个单独的声明,第一个是编译阶段的任务,而第二个则是执行阶段的任务。

  这意味着无论作用域中的声明出现在什么地方,都将在代码本身被执行前首先进行处理可以将这个过程形象地想象成所有的声明(变量和函数)都将被“移动”到各自作用于的最顶端,这个过程被称为提升。
  声明本身会被提升,而包括函数表达式的赋值在内的赋值操作并不会提升。
原文地址:https://www.cnblogs.com/ningningwang/p/6181529.html