javascript - 在 ES6 中使用解构定义可选参数

标签 javascript optional-parameters destructuring

我有一个执行 AJAX 调用的函数,例如:

let retrieveData = (section, sectionItem, callback) => {
    ...
}

第二个参数是可选的,即在某些情况下该参数是必需的,而在其他情况下则不是:

let data = retrieveData(aSection, aSectionItem, function(json)) {
    ...
});

和:

let data = retrieveData(aSection, undefined, function(json)) {
    ...
});

在第二种情况下,我希望能够省略 undefined 参数,我相信通过解构的方式分配选项/默认值是答案(按照这个例子:https://javascript.info/destructuring-assignment#smart-function-parameters) ,但我对如何构建代码缺乏了解。

最佳答案

请使用可选参数和deconstruct你的参数。

const foo = (section, {sectionItem, callback} = {}) => {
  console.log(section, sectionItem, callback);
}

所以 sectionItemcallback 都是可选的:

let data = retrieveData(aSection, {
  sectionItem: 'some',
  callback: json => {
    ...
  },
});

这样你就可以调用:

  • retrieveData(aSection)
  • retrieveData(aSection, {sectionItem: 'some'})
  • retrieveData(aSection, {callback: json => { ... }})

另一个重要的方面是你让可选参数对调用者来说是冗长的。

关于javascript - 在 ES6 中使用解构定义可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46483621/

相关文章:

javascript - 从 Firebase 获取随机项目

javascript - Jquery toggle() 不适用于 YouTube 订阅按钮

javascript - Angular Select 添加未定义的选项

core-data - Swift:类参数作为默认函数参数

javascript - 如何使用 ES6 解构添加默认值和别名?

javascript - 当元素在对象中重复时 ng-repeat 不起作用

perl - 是否有与 python 的 optparse.OptionParser 等效的 perl 模块?

javascript - 如何动态地从对象中提取所有元素

javascript - Vue - 将对象解构到 this(数据)