闭包:

+ 形成闭包的条件

1. 一个不会被销毁的函数执行空间
2. 函数内部 直接 或者 间接 的返回一个函数
3. 内部函数操作(访问, 赋值)着外部函数的变量
+ 当三个条件都满足的时候
=> 我们管内部的函数叫做外部函数的 闭包函数

闭包的作用

1. 保护变量私有化
+ 定义在函数内部的变量就是私有变量
2. 在函数外部访问函数内部的私有变量
+ 利用闭包函数访问

闭包的特点

1. 保护变量私有化
+ 优点: 不去污染全局
+ 缺点: 外部不能访问, 需要闭包函数
2. 可以在函数外部访问函数内部的变量
+ 优点: 不局限于私有变量
+ 缺点: 外部访问需要闭包函数
3. 变量的生命周期
+ 优点: 变量的声明周期被延长了
+ 缺点: 一个不会被销毁的函数空间
致命的缺点: 一个不会被销毁的函数空间
=> 内存泄漏
=> 闭包慎用

闭包销毁

1. 不销毁的空间
2. 返回函数
3. 内部函数引用外部函数变量
+ 当你想销毁闭包的时候, 只要这个不销毁的空间不存在了, 闭包就没了
+ 不销毁的空间:
=> 返回复杂数据类型
=> 外部有变量接收
+ 销毁空间
=> 外部不再有变量接收
=> 外部接收的变量重新赋值

闭包的应用 - 沙箱模式

+ 设计模式的一种: 为了解决特定问题给出的简洁而优化的解决方案
+ 解决: 变量私有化以后的访问和操作

使用:
1. 利用闭包, 把你所有的函数或者属性都放在一个函数内部

闭包的语法糖

+ 语法糖: 使用起来方便, 但是看起来不舒服
+ 闭包的语法糖: getter 获取器和 setter 设置器
+ 作用: 把你制作闭包想做的事情, 伪装成了一个对象内部的成员

语法:
1. 要形成闭包
2. 返回值是一个对象
3. 在对象里面以 getter 和 setter 的语法形式返回函数
{
get 函数名() {},
set 函数名() {}
}

函数柯理化

+ 一种函数的封装形式
+ 把一个函数的两个参数拆开成为两个函数, 每个函数一个参数
=> 多个参数的时候
=> 把第一个参数单独提取出来

准备一个 js 文件
+ 里面是各种正则验证

posted on 2021-10-08 15:20  phantom_yy  阅读(73)  评论(0)    收藏  举报