javascript - 使中间参数可选的惯用方法

标签 javascript arguments ecmascript-6 optional-arguments

实现中间参数是可选的但最后一个参数是必需的 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 ...
}

但它看起来很笨重。有更好的方法吗?

最佳答案

使用 ..argspop() 数组的回调:

function thing(...args) {
  var cb = args.pop();
  //... args is now [1, obj]
  cb(args[0]);
}

thing(1, { a: 1 }, function (data) {
  console.log(data); // 1
});

关于javascript - 使中间参数可选的惯用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36454006/

相关文章:

javascript - 带有mysql的php中的php代码中的 bool 错误

javascript - 如何从 javascript CodeIgniter 调用 Controller

javascript - Angular 8 : Pipe to hide past events doesn't work

class - Scala 扩展构造函数

function - 如何在 MATLAB 中处理函数参数的名称/值对

javascript - 仅将 BabelJS 用作旧浏览器的后备

reactjs - 如何使用 React 和 Webpack 设置 Babel 6 stage 0

javascript - 箭头函数返回的对象中出现“意外标记”语法错误

JavaScript 匿名方法

JavaScript:获取传递变量的参数值和名称