执行上下文
概念
代码“执行”的时候产生的“环境”
1.变量 2.this 3.函数
作用
用来确定当前使用的xx到底值是多少
分类
全局执行上下文
在我们窗口打开的时候创建,窗口关闭的时候销毁
局部执行上下文
在函数调用的时候产生,函数调用结束后销毁
eval执行上下文
与作用域
EC 动态的
作用域 在写好代码时就确定了,是静态的
执行栈
函数或者子例程像堆积木一样存放,以实现层层调用;
EC生命周期
1.创建阶段
(1).生成变量对象
(2).建立作用域链
(3).确定 this 指向
2.执行阶段
(1).变量赋值
(2).函数引用
(3).执行其他代码
3.销毁阶段
执行完毕出栈,等待回收被销毁
环境记录
环境记录是存储变量和函数声明的实际位置。
作用域链
之前的寻找变量都是跨一步作用域去寻找。
如果跨了一步,还没找到呢就要接着跨!一直到全局作用域为止。要是在全局作用域中都没有找到,那就是没有该变量。
这个一步一步“跨”的路线,我们称之为——作用域链。
高阶函数
函数是一等公民:函数可以像其他数据类型一样,出入许多场景。函数可以作为参数,可以作为返回值,可以被变量保存。通过这些手段就能实现高阶函数。
柯里化函数 防抖函数 节流函数 分时函数 惰性函数 函数管道
闭包
广义闭包
广义闭包:函数和它对于外部自由变量的引用共同构成闭包
只要是函数,就是广义闭包
狭义闭包
狭义闭包:当一个内部函数访问它所在的外部函数内部的自由变量的时候,并且这个内部函数被外部引用,就形成了闭包
该销毁的没有销毁
内部函数+外部函数的“自由变量”+内部函数的引用被使用
优缺点
优点:扩大了变量作用范围,延长了变量作用时间,减少了命名空间的污染
缺点:浪费内存,导致内存泄漏
作用
共享变量
做缓存
私有化变量
模块化开发,防止命名空间污染
浙公网安备 33010602011771号