闭包:
+ 形成闭包的条件
1. 一个不会被销毁的函数执行空间
2. 函数内部 直接 或者 间接 的返回一个函数
3. 内部函数操作(访问, 赋值)着外部函数的变量
+ 当三个条件都满足的时候
=> 我们管内部的函数叫做外部函数的 闭包函数
闭包的作用
1. 保护变量私有化
+ 定义在函数内部的变量就是私有变量
2. 在函数外部访问函数内部的私有变量
+ 利用闭包函数访问
闭包的特点
1. 保护变量私有化
+ 优点: 不去污染全局
+ 缺点: 外部不能访问, 需要闭包函数
2. 可以在函数外部访问函数内部的变量
+ 优点: 不局限于私有变量
+ 缺点: 外部访问需要闭包函数
3. 变量的生命周期
+ 优点: 变量的声明周期被延长了
+ 缺点: 一个不会被销毁的函数空间
致命的缺点: 一个不会被销毁的函数空间
=> 内存泄漏
=> 闭包慎用
闭包销毁
1. 不销毁的空间
2. 返回函数
3. 内部函数引用外部函数变量
+ 当你想销毁闭包的时候, 只要这个不销毁的空间不存在了, 闭包就没了
+ 不销毁的空间:
=> 返回复杂数据类型
=> 外部有变量接收
+ 销毁空间
=> 外部不再有变量接收
=> 外部接收的变量重新赋值
闭包的应用 - 沙箱模式
+ 设计模式的一种: 为了解决特定问题给出的简洁而优化的解决方案
+ 解决: 变量私有化以后的访问和操作
使用:
1. 利用闭包, 把你所有的函数或者属性都放在一个函数内部
闭包的语法糖
+ 语法糖: 使用起来方便, 但是看起来不舒服
+ 闭包的语法糖: getter 获取器和 setter 设置器
+ 作用: 把你制作闭包想做的事情, 伪装成了一个对象内部的成员
语法:
1. 要形成闭包
2. 返回值是一个对象
3. 在对象里面以 getter 和 setter 的语法形式返回函数
{
get 函数名() {},
set 函数名() {}
}
函数柯理化
+ 一种函数的封装形式
+ 把一个函数的两个参数拆开成为两个函数, 每个函数一个参数
=> 多个参数的时候
=> 把第一个参数单独提取出来
准备一个 js 文件
+ 里面是各种正则验证

浙公网安备 33010602011771号