JS的运动过程:
1.语法分析
2.预编译
3.执行解释
语法分析就是JS引擎去检查你的代码是否有错误,解释执行就是执行你的代码。最重要的当然还是预编译:
首先要明白函数声明和变量赋值的区别:
预编译(函数执行的前一刻):
1.创建AO对象(Activation Object)(执行上下文);
2.找函数形参和函数内变量声明,将形参名和变量名作为AO对象的属性名,值为undefined;
3.将实参值和行参统一,实参值赋给形参;
4.在函数体内里面找函数声明,值赋予函数体(函数声明会覆盖掉形参与实参的赋值)
可以看下面的例子:
大概按着这样一个顺序:
后面就是JS的执行赋值相关操作了,注意预编译是不会变量赋值的哦!
看结果: