javascript – 最后一个参数是回调时的NodeJS默认参数

我有一个这样的功能(简化):
doSmthg (name,age,callback) {
  callback(name,age);
}

如果没有提供,我希望有一个年龄的认值.

我知道我可以在ES6中做doSmthg(name,callback,age = 42){…},但是我已经被告知回调应该始终是最后一个参数,因为它使函数调用更易读.

现在我找到的解决办法是做以下事情:

doSmthg (name,callback) {
  if (arguments.length === 2) {
    age = 42;
    callback = age;
  }
}

但是我觉得这个解决方案很难阅读.

这是很好的解决方案吗?有更好的一个吗?

解决方法

对于这种情况,你可以使用这样的东西:
function doSmthg(name,callback) {
  if (typeof age === 'function') {
    callback = age;
    age = DEFAULT_VALUE;
  }
  //continue
}

或者您可以使用Hash的选项,我认为这更好,因为使代码更可读,具体取决于参数数量

function doSmthg(options,callback) {
  var name = options.name;
  var age = options.age || DEFAULT_VALUE;
  //continue
}

doSmthg({ name: 'batman' },function() {});

您也可以使用underscore #extend function将选项与认值合并.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...