解构数组对象其实都还挺简单理解的,但是在函数中解构的同时带上默认值就有点不太好理解了

1
function f({ a = "", b = 0 } = {}): void {}

初读很乱,我们从外往里拆:

  • ① 最外层:= {}
1
function f(param = {}) {}

当调用 f() 时,如果没有传参数,就用一个空对象 {}
不然解构会出现问题 如果解构 undefined 或 null 会出现问题
解构底层就是在读对象属性,而 undefined / null 不能读属性

  • ② 中间层:对象解构 { a, b }
1
function f({ a, b }) {}

从参数对象中取出 a 和 b


  • ③ 内层:属性默认值
1
{ a = "", b = 0 }

如果对象里:没有 a → 用 “” 没有 b → 用 0

这是“二层默认值”:
外层默认保证参数一定是对象,
内层默认保证对象里的属性一定有值