实现中间参数可选但最后一个参数必需的JavaScript函数的常用方法是什么?最好使用惯用的ES2015解决方案。
例如,我经常看到可以以多种方式调用的函数,如下所示:
func(firstArg, callback);
func(firstArg, options, callback);
所以实际上发生的是,参数的数量影响每个参数的解释。
我知道我可以通过检查参数的长度来处理这个问题,如下所示:
// func(firstArg, options, callback);
// or: func(firstArg, callback);
function (firstArg, ...args) {
let options = {};
if (args.length > 1) {
options = args.shift();
}
let callback = args[0];
// And do stuff ...
}
但看起来很笨重。有没有更好的办法?
2条答案
按热度按时间6ie5vjzr1#
使用
...args
和pop()
数组的回调:ecbunoof2#
惯用的方法包括类型检查。您还可以利用默认参数。
这不仅可以确保始终有一个options对象,而且在有人切换
callback
和options
的参数时也可以使用。所以选项排在第二还是最后并不重要。此外,也许更重要的是,源代码清楚地告诉我们它的意图。