函数中的 JavaScript 可选解构参数

Yan*_*hon 2 javascript destructuring

我有这个函数签名

const foo = (arg, { opt1, opt2, opt3 }) => {
   ...
};
Run Code Online (Sandbox Code Playgroud)

但我希望第二个参数是可选的,例如调用函数

foo("Hello");
Run Code Online (Sandbox Code Playgroud)

但是,我得到

类型错误:无法解构opt1“未定义”或“空”的属性。

所以,我很想通过更改函数来解决这个问题,例如:

const foo = (arg, options = {}) => {
   const { opt1, opt2, opt3 } = options;

   ...
};
Run Code Online (Sandbox Code Playgroud)

但是想知道是否有更内联的替代方案?

Nin*_*olz 11

您可以分配一个默认对象并同时进行解构。

undefined如果没有第二个参数 或 ,则结果适用于所有三个解构属性undefined

const foo = (arg, { opt1, opt2, opt3 } = {}) => {
   ...
};
Run Code Online (Sandbox Code Playgroud)


小智 6

您可以{ opt1, opt2, opt3 } = {} 在声明函数时执行此操作。


小智 5

你可以做:-

const foo = (arg, { opt1, opt2, opt3 } = {}) => {

   ...
};
Run Code Online (Sandbox Code Playgroud)