js代码执行过程
1.先扫描全局语法是否有错误,有错则报错并停止扫描
2.无错则进行预编译过程
创建全局GO对象 global object
对var声明的变量进行声明提升但不赋值,放入GO对象中
对函数体整体进行提升,放入GO对象中
3.函数执行时
创建AO对象 activation object
找形参和变量声明,将变量和形参名作为AO属性名,值为undefined
将实参和形参统一
在函数体里面找到函数声明,值赋予函数体
输出下面的结果
console.log('1:',a);
function a(a){
console.log('2:',a);
var a = 10;
console.log('3:',a);
function a (){
}
console.log('4:',a);
}
a(1);
var a;
console.log('5:',a);
执行过程
执行结果: