最近在研究这个,做一下笔记。
Javascript Hoisting:In javascript, every variable declaration is hoisted to the top of its declaration context.
概念:在Javascript语言中,变量的声明(注意不包含变量初始化)会被提升(置顶)到声明所在的上下文。
例如:
输出并不是111 ,而是222
代码改为:
输出的才会是111.
原因:
1.
var a; // 这是声明
a = 1; // 这是定义(赋值)
var a = 1; // 合二为一:声明变量的存在并赋值给它
不论if是否进入,当解析器读到var a=2的时候,其实代码实际上是:
为什么在那个位置,因为JS没有{} 块级定义域,只有函数定义域。
---------------------------------------以上是变量的情况-------------------------------------