执行上下文

概念

代码“执行”的时候产生的“环境”

1.变量 2.this 3.函数

 

作用

用来确定当前使用的xx到底值是多少

 

分类

全局执行上下文

在我们窗口打开的时候创建,窗口关闭的时候销毁

局部执行上下文

在函数调用的时候产生,函数调用结束后销毁

eval执行上下文

 

与作用域

EC  动态的

作用域  在写好代码时就确定了,是静态的

 

执行栈

函数或者子例程像堆积木一样存放,以实现层层调用;

 

EC生命周期

   1.创建阶段

     (1).生成变量对象

     (2).建立作用域链

     (3).确定 this 指向

   2.执行阶段

     (1).变量赋值

     (2).函数引用

     (3).执行其他代码

   3.销毁阶段

     执行完毕出栈,等待回收被销毁

 

环境记录

环境记录是存储变量和函数声明的实际位置。

 

作用域链

之前的寻找变量都是跨一步作用域去寻找。

如果跨了一步,还没找到呢就要接着跨!一直到全局作用域为止。要是在全局作用域中都没有找到,那就是没有该变量。

这个一步一步“跨”的路线,我们称之为——作用域链。

 

 

高阶函数

函数是一等公民:函数可以像其他数据类型一样,出入许多场景。函数可以作为参数,可以作为返回值,可以被变量保存。通过这些手段就能实现高阶函数。

柯里化函数 防抖函数 节流函数 分时函数 惰性函数 函数管道

 

闭包

广义闭包

广义闭包:函数和它对于外部自由变量的引用共同构成闭包

只要是函数,就是广义闭包

狭义闭包

狭义闭包:当一个内部函数访问它所在的外部函数内部的自由变量的时候,并且这个内部函数被外部引用,就形成了闭包

该销毁的没有销毁

内部函数+外部函数的“自由变量”+内部函数的引用被使用

 

优缺点

优点:扩大了变量作用范围,延长了变量作用时间,减少了命名空间的污染

缺点:浪费内存,导致内存泄漏

 

作用

共享变量

做缓存

私有化变量

模块化开发,防止命名空间污染

 

 

posted on 2020-03-27 10:25  KnowsNo  阅读(93)  评论(0)    收藏  举报