将单个参数传递给具有默认值的函数



我有一个javascript函数,看起来像: my_app.api.index = function(event, page = 1, sort = "last_name", desc = true, limit = 9999)

因此,这是使用我们在ES6中获得的极好的默认值。我想做的是调用这个函数,只传递其中一个值。。。或者两个,或者三个,不管有多少,都不必全部通过。

类似于: my_app.api.index(sort: sortField);

理想的行为是,它为其他参数使用默认值,但为命名参数使用传递的值。这是什么语法?这可能吗?

您可以使用对象。Object.assign()将覆盖您在参数中指定的值,所有其他值将保持默认值:

my_app.api.index = function(options) {
options = Object.assign({
page: 1,
sort: "last_name",
desc: true,
limit: 9999
}, options);

称之为:

my_app.api.index({sort: sortField});

定义函数,使其接受单个对象(具有默认对象值(,而不是参数列表。为了语法简洁,对自变量中的对象进行去结构化:

const myfn = ({ event='someevent', page=1, sort='lastName' }) => {
console.log('fn running with ' + event + ' ' + page + ' ' + sort);
};
myfn({ sort:'firstName' });

最新更新