【发布时间】:2015-11-19 13:12:47
【问题描述】:
我有一个类似这样的功能(简化):
doSmthg (name, age, callback) {
callback(name, age);
}
如果没有提供年龄,我希望有一个默认值。
我知道我可以在 ES6 中使用 doSmthg(name, callback, age=42) {...},但我被告知 callback 应该始终是最后一个参数,因为它使对函数的调用更具可读性。
目前我找到的解决方案是执行以下操作:
doSmthg (name, age, callback) {
if (arguments.length === 2) {
age = 42;
callback = age;
}
}
但我觉得这个解决方案很难阅读。
这是好的解决方案吗?有更好的吗?
【问题讨论】:
-
使用 Promise 是一种选择吗?
-
@robertklep 我从未在这个项目中使用过 Promise。如果它导致一个非常“酷”的解决方案,我可以考虑使用承诺,但我宁愿不
-
您的函数声明将如下所示:
doSmthg(name, age = 42)(因为您不再需要传递回调)。 -
@robertklep 我会看看这个。谢谢你:)
-
我肯定会建议使用 Promise。它们是 ES6 中的一流语言结构,并且比回调更好。在几乎每个对我有回调的库中,最终都会对
bluebird产生“隐形”依赖,因为我必须承诺一切。
标签: javascript node.js ecmascript-6