我有一个这样的功能(简化):
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将选项与默认值合并.
原文地址:https://www.jb51.cc/js/150805.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。