js高级,执行上下文

js高级:执行上下文

Name: EC execution context

栈:用来存储基本数据类型里面是具体的值还有堆里面的地址

堆: 用来存储引用数据类型也可以用来存储基本数据类型

功能

代码执行之前的准备工作,确定当前环境下变量的取值

分类:

全局上下文 :打开一个窗口就会创建一个全局上下文(关闭即销毁)

,局部上下文:调用一个函数就会创建一个局部上下文(函数执行完,销毁)

,eval上下文(了解):会解析字符中的js代码

变量提升

:var声明的变量,只提升变量的声明

函数提升

:字面量声明的函数,提升整个函数体

执行上下文

全局执行上下文

1全局对象window GO

局部执行上下文

1创建局部对象AO Active Object

2预编译

a>形参 变量 a

b>形参 变量赋值 un a=un

c>形参和实参相统一 a=1

d>函数提升

e>确定this的指向(由调用者确定)

f>确定作用域(词法环境:在哪里声明,就确定在哪里)

g>初始化作用域链

3执行函数体

var i=1;

function f70(){console.log(i);

let i =0;暂时性死区,告知当前AO拥有该变量} f70();

区别

作用域:静态不变 上下文:动态 调用一次产生一个

作用域链

一般情况下,变量取值到 创建 这个变量 的函数的作用域中取值。但是如果在当前作用域中没有查到值,就会向上级作用域去查,直到查到全局作用域,这么一个查找过程形成的链条就叫做作用域链。

执行上下文的生命周期

1创建(变量和函数的提升)

2执行(函数体的代码{改变当前变量和全局变量的值})

执行栈:存放执行上下文(最底下的是GO最上面正在调用的函数)

注FILO,进栈(压栈),出栈

3销毁

js高级,执行上下文

上一篇:HTML元素中常用块级元素、行内元素、行内块元素及三者间的转换


下一篇:进击的 CSS 渐变