一、执行上下文
函数每一次调用就会产生一个新的执行上线文环境,它被放在执行上下文栈。变量或函数的上下文决定了它们能够拜访哪些数据,以及它们的行为。执行上下文栈会在其所有代码执行结束把执行上下文弹出,将控制权返回给执行上下文。ECMAScript代码执行流就是通过执行上下文栈进行管制。
二、执行上下文类型
1.全局执行上下文是最外层的上下文,在浏览中全局上下文就是window对象。JavaScript代码运行起来会首先进入该环境,栈底永远都是全局上下文,而栈顶就是以后正在执行的上下文。
2.函数执行上下文
3.eval执行上下文
三、三个属性
1.变量对象,每个上下文都有一个变量对象,这个上下文内定义的所有变量和函数都存在这个对象上,然而无奈通过代码拜访这个变量对象,但在后盾会用到它。
2.作用域链,在执行上下文代码执行的时候,创立作用域链,作用域链决定执行上下文代码在拜访变量和函数的程序,权力。
3.this,
四、执行上下文生命周期
创立-> 执行 -> 回收
1.创立
(1)创立作用域链(Scope Chain)。
(2)创立变量对象(函数的形参、函数申明、变量申明)。
(3)求”this“的值。
2.执行
代码执行
3.回收
执行上下文出栈被垃圾回收机制进行回收。
五、加强作用域链
1.try/catch语句的catch块
2.with语句
catch语句会创立新的变量对象,with语句会向作用域前段增加指定的对象。
六、变量申明
var:变量会主动增加到最靠近的上下文
let:
const:
如果未经申明就初始化,将主动增加到全局上下文
小白,想零碎的学习JavaScript,看的大佬文章,书,记录一下学习的内容。不然老是遗记诶,