函数表达式是创建闭包最直接常用的方式,可封装私有状态、实现柯里化、绑定事件回调上下文、支持延迟求值与配置预设。

函数表达式是创建闭包最直接、最常用的方式——它让内部函数能“记住”并持续访问外部函数的变量,即使外部函数早已执行完毕。
封装私有状态与数据隐藏
函数表达式配合闭包,可避免使用全局变量,把状态限制在局部作用域内。比如计数器:
- 外部函数定义局部变量 count,不对外暴露
- 内部函数以函数表达式形式返回,形成闭包,持续持有对 count 的引用
- 每次调用返回的函数,都能读写同一个 count,但外部无法直接修改它
实现柯里化(Currying)
函数表达式天然适合构建多层嵌套的闭包链,逐步接收参数:
- 外层函数接收部分参数,通过函数表达式返回一个新函数
- 新函数在其作用域中“捕获”已传入的参数,等待剩余参数
- 最终调用时,所有参数汇集,执行原始逻辑(如
add(1)(2)(3))
事件处理与回调中的上下文绑定
在循环或异步操作中,函数表达式闭包能固化当前迭代值或配置项:
- for 循环中,用立即执行的函数表达式包裹
setTimeout或事件监听器 - 将当前
i或item作为参数传入,由内部函数表达式捕获并保存 - 避免因变量提升或作用域共享导致所有回调都使用最后一次的值
延迟求值与配置预设
函数表达式闭包常用于生成“定制化函数”,把运行时才确定的配置提前绑定:
- 如
createComparator("name")返回一个比较函数,该函数始终按 "name" 字段比较 - 配置项(字段名、单位、阈值等)在创建时固化进闭包,后续调用无需重复传参
- 适用于 API 封装、模板渲染器、校验规则工厂等场景

















