JS基础——变量提高

变量提高

在js中,经过var声明的变量,不管在何处申明,都会被视为声明于所在函数的顶部(若是不在函数内,则视为全局做用域顶部)。申明会提高,初始化不会提高。
例如:当咱们单独执行console.log(a)时,代码会产生异常,由于a没有定义。
clipboard.png
可是在后面加上var a = 123,执行结果输出undefined
clipboard.png
js执行分两个步骤:函数

  • 编译(词法解释/预解释)
  • 执行

这里起做用的就是变量提高,编译后的代码至关于
clipboard.png
为何输出的不是123呢?由于初始化不会提高,因此a = '123' 不会提高至顶部。
注意的是,这里的声明都是经过var申明的。使用letconst声明的变量,在达到声明处以前都是没法访问的,试图访问会致使一个引用错误。
clipboard.png
letconst必需先申明再引用,而且只会做用于当前代码块内部(函数内部、大括号内部、for循环内部)。一般建议变量申明优先使用const,而后再使用letspa

函数提高

function函数声明会被提高到当前做用域 的最前面。例如,在下面例子中test函数被提高至顶部:
clipboard.png
但对于经过表达式申明的函数不会提高,以下:
clipboard.png
test变量提高了,但初始化不会提高。code

资料:《深刻理解ES6》第一章ip

相关文章
相关标签/搜索