预编译
Posted yangjonathan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了预编译相关的知识,希望对你有一定的参考价值。
function fn(a) { console.log(a); //function a() {} var a = 123; //变量声明提升在第二部已经执行了。这会只执行123的赋值,所以AO对象里面的a变为123; console.log(a); // 123 function a () {} //函数声明提升,在第四步已经执行了,所以这一步不看(已经看过了)。 console.log(a); // 123 var b = function () {} //把function 赋值给了b; console.log(b); // function () {}; function d() {} //函数声明提升,在第四步已经执行了,所以这一步不看(已经看过了)。 } fn(1);
// 1.创建AO对象 (Activation Object)(中文名:执行期上下文)也就是我们所理解的作用域;
// 2.找形参和变量声明,将变量和形参名作为AO属性名,值为undefined
// 3.将实参值和形参统一;
// 4.在函数体里面找到函数声明,值赋予函数体。
function fn(a) { console.log(a); //function a() {} var a = 123; //变量声明提升在第二部已经执行了。这会只执行123的赋值,所以AO对象里面的a变为123; console.log(a); // 123 function a () {} //函数声明提升,在第四步已经执行了,所以这一步不看(已经看过了)。 console.log(a); // 123 var b = function () {} //把function 赋值给了b; console.log(b); // function () {}; function d() {} //函数声明提升,在第四步已经执行了,所以这一步不看(已经看过了)。 } fn(1);
以上是关于预编译的主要内容,如果未能解决你的问题,请参考以下文章