js 基础概念

一 执行上下文 和 执行上下文栈

执行上下文:一段javascript代码执行前的准备工作
问题一:js引擎遇到怎样一段代码才会做“准备工作呢”?
可执行代码类型:全局代码、函数代码、eval代码
执行上下文的三个重要概念 : 变量对象,作用域链,this

问题二:准备工作是什么?
准备工作就是执行上下文,函数声明提升、变量声明提升

执行上下文栈

模拟执行上下文栈 ,ECStack = [];
只有当整个应用程序结束时,ECS才会被情况,所以ECStack底部永远有个globalContext, ECStask = [globalContex];

function f1 (){
    console.log('fun1');
}
function f2 (){
    f1 ();
}
f2();
//伪代码
ECStask.push(f2Context);
ECStask.push(f1Context);
ECStask.pop(f1Context);
ECStask.pop(f2Context);

问题三:闭包的上下文执行栈是这么存储的

posted on 2019-06-11 16:43  长安城下翩翩少年  阅读(153)  评论(0编辑  收藏  举报