javascript - 重构此函数以在 if 语句 Javascript 内部和外部一致地使用“return”
问题描述
我有一个函数,它声纳报告它没有一致地使用返回:
function getRate(a) {
try {
const manager = rateManagement.getInstance();
const rate = await manager.getAllRate();
let result = 0;
if (rate && rate.length) {
const rateConfig = rate.find((x) => x.rate?.includes(a));
const aRating = rateConfig?.rate;
result = aRating || result;
}
return result;
} catch (error) {
logger.logError(error);
}
}
但是,使用此函数,即使我在 if 中也没有返回任何内容,声纳也没有检测到它使用 return 不一致:
getGroup() {
const manager = groupManagement.getInstance();
const group = await manager.getAllGroup();
let result = [];
if (group && group.length) {
result = group.map((x) => x.rate);
}
return result;
}
是因为 try, catch 块吗?你能解释一下为什么吗?
解决方案
如果在 try 块内抛出错误,函数getRate
不会返回值,因为 catch 块只记录错误,但不返回值。您可以通过返回一些值来“修复”此问题,例如undefined
. 但是,抛出错误并让调用者处理它通常更有意义。
推荐阅读
- vb.net - 如何在 vb.net 中使用数组来使用组合框
- python - TensorFlow `True` 和 `False` 布尔值
- json - 在寻呼机“少”中打破 JSON
- cordova - 激活 iOS 应用程序组和服务通知扩展后,无法再在 Cordova 上构建
- api - Alexa 设备设置 API 错误:401 - "{"code":"ACCESS_DENIED","message":"Authentication failure with reason: TOKEN_INVALID"}
- class - Kotlin 为枚举类值方法定义接口
- python - Openweathermap:通过 python 没有响应,但通过 APItester 有响应
- csv - 谷歌浏览器控制台出现中文编码错误
- c++ - C/C++ 的文件/符号依赖图可视化
- c# - 在 C# 中对网格视图进行更改时如何执行存储过程