箭头函数是 ES6 简化函数写法的语法糖,和普通函数有核心语法与特性差异。最关键的是this 指向:普通函数的 this 由调用方式决定,箭头函数没有自己的 this,会捕获外层作用域的 this 且永久绑定。箭头函数不能作为构造函数,不能用 new 关键字;没有 arguments 对象,可用 rest 参数替代;没有 prototype 原型;不能用作 Generator 函数。语法上支持简写,单参数可省略括号,单条返回语句可省略大括号。日常开发中,回调函数、工具函数优先用箭头函数,需要动态 this、构造函数时必须用普通函数。
高阶函数是函数式编程的核心,满足两个条件之一即可:接收函数作为参数,或者返回值是一个函数。JS 内置了大量高阶函数,比如数组的 map、filter、reduce、forEach 等,它们接收回调函数处理数据。高阶函数的作用是抽象通用逻辑、实现代码复用,让代码更简洁灵活。比如封装一个通用的遍历函数,接收处理逻辑作为参数,可适配不同业务场景。它是实现柯里化、函数组合、异步控制的基础,也是现代 JS 开发的必备技能。
纯函数是无副作用、可预测的函数,是函数式编程的基础。它满足两个核心规则:第一,相同的输入永远得到相同的输出,不依赖外部变量、随机数、时间等不确定因素;第二,不会产生副作用,不修改传入的参数、不改变全局变量、不执行 DOM 操作、不发起网络请求。纯函数的优势是易于测试、可缓存结果、支持并行执行,代码稳定性极高。React、Redux 等框架大量使用纯函数,保证数据流向可预测,避免意外的状态修改。
柯里化是一种函数改造技术,把接收多个参数的函数,转换成一系列接收单个参数的嵌套函数。原函数一次性接收所有参数,柯里化后每次只传一个参数,返回一个新函数,直到所有参数传递完毕,才执行原函数逻辑。比如 fn(a,b,c) 转为 fn(a)(b)(c)。柯里化的用途非常实用:实现参数复用(固定部分参数)、延迟执行、函数定制化。它是函数式编程的常用技巧,让函数更灵活,适配更多场景,也是高阶函数的典型应用。