关于javascript:执行上下文与作用域

38次阅读

共计 698 个字符,预计需要花费 2 分钟才能阅读完成。

一、执行上下文

函数每一次调用就会产生一个新的执行上线文环境,它被放在执行上下文栈。变量或函数的上下文决定了它们能够拜访哪些数据,以及它们的行为。执行上下文栈会在其所有代码执行结束把执行上下文弹出,将控制权返回给执行上下文。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,看的大佬文章,书,记录一下学习的内容。不然老是遗记诶,

正文完
 0