javaScript 的代码都是在执行上下文中运行的。
执行上下文指当前环境下的变量,函数声明,作用域链和this对象等信息。
创建阶段:
生成变量对象,建立作用域链,确定this的指向
执行阶段
赋值变量,函数的引用,执行其他代码
变量对象是与执行上下文相关的数据作用域,存储了执行上下文中的变量和函数声明。
变量对象是一个抽象概念,当在全局执行上下文中时,变量对象就是全局对象 。
一种先进后出的数据结构,用来存储代码运行的所有上下文。
1.全局执行上下文,(全局在浏览器环境下指的是window)
2.函数执行上下文,每当一个函数创建时,就会创建一个新的执行上下文。
3.eval 函数执行上下文,eval(‘1’ + ‘2’)
每个上下文都有三个重要属性:变量对象,作用域链,this
单线程,只在主线程上执行
同步执行,代码至上而下执行。
全局上下文只有一个,就是window对象。
每执行一个函数,都会创建一个新的执行上下文。
「历时8个月」10万字前端知识体系总结(基础知识篇)