js函数的解析与执行过程

function f(a,b,c){
    alert(a);//函数字符串
    alert(b);//2
    
    var b = 5;
    function a(){
        
    }
}
f(1,2);

//预处理
lexicalEnvironme{//这里的词法环境对象不是window,而是每个函数自己创建的,我们在外部没法访问
    a:指向函数的引用;//因为函数覆盖了变量
    b:2;//传入的实参
    c:undefined;//执行阶段会给预处理成员赋值
    arguments:实际出入参数;
}
function f1(){
    function f2(){
        b = 100;//没有用var声明添加到window全局对象成员(最外部对象),函数的词法环境没法访问,在f2,f1的词法环境对象里面也有
    }
    f2();
}
f1(); 
原文地址:https://www.cnblogs.com/by-dxm/p/6529890.html