在快速路由的请求处理程序中返回值有什么作用吗?

Ric*_*ler 6 javascript express

问题很简单:在快速路由的请求处理程序中返回值是否会执行任何操作?


我见过人们返回请求处理程序的响应:

route.get('/something', (req, res) => {
  // blah blah

  if (/* something */) {
    return res.send('something'); // return on the same line
  }

  return res.send('something else');
});
Run Code Online (Sandbox Code Playgroud)

我看到人们在发送回复后提前返回:

route.get('/something', (req, res) => {
  if (/* something */) {
    res.send('something');
    return; // return after
  }

  res.send('something else');
  return;
});
Run Code Online (Sandbox Code Playgroud)

有什么区别吗?返回值是否被使用?

jfr*_*d00 9

在快速路由的请求处理程序中返回值有什么作用吗?

不,不是的。Express 不会关注您从路由处理程序返回的任何值。

当你看到类似这样的东西时:

return res.send(...);
Run Code Online (Sandbox Code Playgroud)

这在 Express 中实际上是一样的:

res.send(...);
return;
Run Code Online (Sandbox Code Playgroud)

Express 中发生的情况没有区别。在这种情况下,返回仅用作流量控制(退出函数),而不是因为有人想要返回一个值,所以这两者都具有完全相同的行为。

我个人更喜欢第二种形式,因为第一种形式可以被阅读代码的人解释为暗示返回值可能有意义(即使没有)。