重构此函数以在 if 语句 Javascript 内部和外部一致地使用“return”
Posted
技术标签:
【中文标题】重构此函数以在 if 语句 Javascript 内部和外部一致地使用“return”【英文标题】:Refactor this function to use "return" consistently inside and outside of if statement Javascript 【发布时间】:2021-09-21 00:25:29 【问题描述】:我有一个函数,它的声纳报告它没有一致地使用返回:
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
块内抛出错误,您认为函数会返回什么?
哦,我现在明白了。谢谢@Ivar
catch 错误块中的常见返回是什么,返回 null? @Ivar
这在一定程度上取决于调用函数时是否可以预期。如果您返回null
,但调用代码没有考虑到这一点,则很可能会导致错误。如果没有要返回的逻辑值,则可能强烈表明错误处理应该在该行的其他位置而不是在此函数中。这一切都取决于如果您的代码未能获得速率应该发生什么。
【参考方案1】:
函数getRate
如果在try 块内抛出错误,则不返回值,因为catch 块只记录错误,但不返回值。你可以通过返回一些值来“修复”这个问题,例如,undefined
。但是,抛出错误并让调用者处理它通常更有意义。
【讨论】:
以上是关于重构此函数以在 if 语句 Javascript 内部和外部一致地使用“return”的主要内容,如果未能解决你的问题,请参考以下文章