gpt4 book ai didi

javascript - Node JS - 我应该执行 "return cb(..)"还是先执行 cb(..) 然后返回?

转载 作者:行者123 更新时间:2023-11-30 14:48:58 26 4
gpt4 key购买 nike

这可能是个愚蠢的问题,但我只想知道这样做的含义:

每当我遇到错误或我想完成一些功能流程时,我都会收到如下指令:

if(err) {
cb(err); // or for example res.json({...});
return;
}

不过我见过一些格式如下的代码:

if(err) {
return cb(err);
}

这样做有内存或其他风险吗?对所有函数进行函数值?

推荐的方法是什么?

最佳答案

如果宿主函数和调用者不期望返回值,那么您的两个选择中的任何一个都会以相同的方式执行。第二个:

return cb(err);

通常纯粹是出于速记的原因(将返回放在一行上)。就我个人而言,我不喜欢这种速记,因为当阅读这段代码时,它意味着 cb() 正在返回一个您希望从宿主函数返回的值,但事实并非如此完全没有。

所以,我更喜欢:

if(err) {
cb(err); // or for example res.json({...});
return;
}

甚至有时:

if(err) {
cb(err); // or for example res.json({...});
} else {
// other code here
}

因为这两者都使宿主函数或回调中没有预期的返回值变得更加清楚。但是,这是我对代码清晰度的看法 - 在执行方面没有实质性差异。

Are there any memory or other kind of risks on doing that? Carrying on the function value over all the functions?

一个普通的return 语句或一个没有任何return 语句结束的函数返回undefined。如果 cb() 返回 undefined,则返回 cb()也从宿主函数返回undefined`。因此,那里的返回值也应该没有差异。返回值没有差异,内存使用应该没有差异。

return cb() 代码确实允许回调返回一个值,该值也成为宿主函数的返回值。如果那是你想要的,那么你将不得不以这种方式编码,但这通常不是你想要的,所以使用 return cb() 允许调用者也许使用回调返回值一种您不打算使用的方式,您将来可能会无意中破坏它,因为它不是预期的功能。

关于javascript - Node JS - 我应该执行 "return cb(..)"还是先执行 cb(..) 然后返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48455737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com