JS是脚本语言,但它也会通过编译,编译就发生在代码执行前的极短期内(微妙级甚至更短)bash
编译器进行代码生成时,会建立执行上下文。函数
有三处代码能够建立执行上下文post
这些上下文构成一个执行上下文栈,新的上下文会添加到栈的顶部,执行完则出栈,直到再次到达全局执行上下文。this
每一个执行上下文有三个重要属性:变量对象(Variable Object),做用域链(Scope chain)和thisspa
executionContextObj = {
// 变量对象
'variableObject': { /* function arguments / parameters, inner variable and function declarations */ },
// 做用域链
'scopeChain': { /* variableObject + all parent execution context's variableObject */ }, 'this': {} } 复制代码
其建立过程以下指针
1)建立变量对象code
2)创建做用域链cdn
做用域就是上面的变量对象,做用域链就是由当前执行上下文的变量对象与全部上层执行上下文的变量对象组成的带头结点的单向链表。对象
3)肯定this的指向blog
执行过程当中最重要的就是事件循环。
欢迎关注个人微博@狂刀二