1.JavaScript 中的声明和赋值
2.JavaScript 代码的执行流程
- 从概念的字面意义上来看,“变量提升”意味着变量和函数的声明会在物理层面移动到代码的最前面,正如我们所模拟的那样。但,这并不准确。
- 实际上变量和函数声明在代码里的位置是不会改变的,而且是在编译阶段被 JavaScript 引擎放入内存中。
输入一段代码,经过编译后,会生成两部分内容:执行上下文(Execution context)和可执行代码。
VariableEnvironment:执行环境
myname -> undefined,
showName ->function : {console.log(myname)
思考下面代码执行顺序;
showName()
var showName = function() {
console.log(2)
}
function showName() {
console.log(1)
}
经过编译阶段:
第一行由于这行代码不是声明操作,所以 JavaScript 引擎不会做任何处理;
- 执行上下文环境变量:
showName : undefined;
showName:function(){consoele.log(1)}
- 可执行代码 赋值操作
showName()
showName = function() {
console.log(2)
}
执行阶段 console.log(1) 将可执行代码一条一条执行
注意:
1:如果是同名的函数,JavaScript编译阶段会选择最后声明的那个。
2:如果变量和函数同名,那么在编译阶段,变量的声明会被忽略