箭头函数不支持原生默认参数语法,但可通过对象/数组解构赋值设默认值(需为整体参数设默认空对象或空数组),或对原始类型用空值合并操作符兜底。

JavaScript 箭头函数本身不支持传统函数声明中的默认参数语法(如 function foo(a = 1) {}),但可以通过解构赋值 + 默认值的方式,在参数为对象或数组时实现等效效果。
箭头函数中用对象解构设置默认参数
这是最常用且推荐的方式:将参数定义为对象,利用解构赋值的默认值特性。
- 写法示例:
const greet = ({ name = 'Guest', age = 25 } = {}) => `Hello ${name}, you are ${age}`; - 注意必须给整个参数设默认值
= {},否则传入undefined会报错 - 调用时可传部分属性:
greet({ name: 'Alice' })→"Hello Alice, you are 25"
箭头函数中用数组解构设置默认参数
适用于按位置传参、且希望有默认值的场景,逻辑与对象解构类似。
- 写法示例:
const sum = ([a = 0, b = 0] = []) => a + b; - 同样需要给参数整体设默认空数组
= [],避免解构undefined报错 - 调用:
sum([1])→1;sum()→0
简单类型参数无法直接设默认值?用逻辑运算符兜底
如果只想接收一个原始值(比如字符串或数字),箭头函数不能像普通函数那样写 (x = 5) => x,但可以用短路逻辑替代:
立即学习“Java免费学习笔记(深入)”;
-
const double = x => (x ?? 0) * 2;(使用空值合并操作符,推荐) -
const double = x => (x !== undefined ? x : 10) * 2;(显式判断) - 不建议用
x || 10,因为0、''、false会被误判为假值
为什么不支持原生默认参数?
箭头函数是表达式,不是函数声明或函数表达式,其参数列表不支持 param = defaultValue 语法。这是语言设计决定的,与 this 绑定、简洁性等目标相关。想用完整默认参数语法,需改用函数声明或函数表达式。


















