Javascript - 为函数参数中的对象可选字段设置默认值

Javascript - Set default values for object optional fields in function params

function myFunction(data, options = { merge: true, cache: false }) {
   console.log({ merge: options.merge });
   console.log({ cache: options.cache });
   console.log("----------------------");
}


myFunction({}, { cache: true });
myFunction({}, { merge: false });
myFunction({});

在上面的示例中,我该怎么做才能避免丢失可选字段“merge”的默认值?

其中一种方式:

function myFunction(data, options) {
  options = {merge: true, cache: true, ...options}
  console.log({merge: options.merge});
  console.log({cache: options.cache});
  console.log("----------------------");
}

您可以使用解构赋值符号的默认值赋值

{ merge = true, cache = false } = {}

function myFunction(data, { merge = true, cache = false } = {}) {
   console.log({ merge: merge });
   console.log({ cache: cache });
   console.log("----------------------");
}


myFunction({}, { cache: true });
myFunction({}, { merge: false });
myFunction({});

另一种方法是使用解构的后备值功能

function myFunction(data, options = {}) {
    const {merge = true, cache = true} = options;
    console.log({merge});
    console.log({cache});
    console.log("----------------------");
}