一预编译:.创建AO对象 → 找形参和变量的声明作为AO对象的属性且值为undefined → 实参和形参统一 → 找函数声明(如果函数声明和变量名称一致就覆盖变量)
function fn(a,c){ console.log(a) // function a(){} var a =123 console.log(a) // 123 console.log(c) // function c(){} function a(){} if(false){ var d =333 } console.log(d) //undefined console.log(b) //undefined var b = function(){} //这个不是函数声明是函数的表达式 console.log(b) //function(){} function c(){} console.log(c) //function c(){} } fn(5,6) //预编译过程: // 1.创建AO对象 // 2.找形参和变量的声明作为AO对象的属性且值为undefined // 3.实参和形参统一 // 4.找函数声明(如果函数声明和变量名称一致就覆盖变量) // 5.js的解释执行(逐行执行) // AO:{ // a: undefined → 5 → function a(){} // b: undefined // c: undefined → 6 → function c(){} // d: undefined // }
二.预编译结束后进行JS逐行执行(即第5步)
JS的预编译
最新推荐文章于 2024-07-23 11:32:13 发布