Rya*_*yan 6 javascript destructuring optional-parameters
我有一个执行 AJAX 调用的函数,如下所示:
let retrieveData = (section, sectionItem, callback) => {
...
}
Run Code Online (Sandbox Code Playgroud)
其中第二个参数是可选的,即在某些情况下该参数是必需的,而在其他情况下则不是:
let data = retrieveData(aSection, aSectionItem, function(json)) {
...
});
Run Code Online (Sandbox Code Playgroud)
和:
let data = retrieveData(aSection, undefined, function(json)) {
...
});
Run Code Online (Sandbox Code Playgroud)
在第二个实例中,我希望能够省略undefined参数,我相信通过解构的方式分配选项/默认值是答案(根据这个例子:https : //javascript.info/destructuring-assignment#smart-function -parameters),但我对如何构建代码缺乏了解。
你目前的方式:
let retrieveData = (section, sectionItem, callback) => {
console.log('Section :', section);
console.log('Section item :', sectionItem);
console.log('Callback :', callback);
}
retrieveData('a', 'b', () => {});
retrieveData('a', undefined, () => {});Run Code Online (Sandbox Code Playgroud)
sectionItem省略,它将是undefined.let retrieveData = ({ section, sectionItem, callback }) => {
console.log('Section :', section);
console.log('Section item :', sectionItem);
console.log('Callback :', callback);
}
retrieveData({
section: 'a',
sectionItem: 'b',
callback: () => {}
});
retrieveData({
section: 'a',
callback: () => {}
});Run Code Online (Sandbox Code Playgroud)
sectionItem:let retrieveData = ({ section, sectionItem = 'defaultValue', callback }) => {
console.log('Section :', section);
console.log('Section item :', sectionItem);
console.log('Callback :', callback);
}
retrieveData({
section: 'a',
sectionItem: 'b',
callback: () => {}
});
retrieveData({
section: 'a',
callback: () => {}
});Run Code Online (Sandbox Code Playgroud)
sectionItem到函数的末尾,从而更容易省略。let retrieveData = (section, callback, sectionItem) => {
console.log('Section :', section);
console.log('Section item :', sectionItem);
console.log('Callback :', callback);
}
retrieveData('a', () => {}, 'b');
retrieveData('a', () => {}); // Here you omit the parameterRun Code Online (Sandbox Code Playgroud)
let retrieveData = (options) => {
console.log('Section :', options.section);
console.log('Section item :', options.sectionItem);
console.log('Callback :', options.callback);
}
retrieveData({
section: 'a',
sectionItem: 'b',
callback: () => {}
});
retrieveData({
section: 'a',
callback: () => {}
});Run Code Online (Sandbox Code Playgroud)
请使用可选参数并解构您的参数。
const foo = (section, {sectionItem, callback} = {}) => {
console.log(section, sectionItem, callback);
}
Run Code Online (Sandbox Code Playgroud)
所以sectionItem和callback都是可选的:
let data = retrieveData(aSection, {
sectionItem: 'some',
callback: json => {
...
},
});
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以调用以下任一方法:
retrieveData(aSection)retrieveData(aSection, {sectionItem: 'some'})retrieveData(aSection, {callback: json => { ... }})另一个重要的方面是您对调用者保持详细的可选参数。
| 归档时间: |
|
| 查看次数: |
10176 次 |
| 最近记录: |