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

Javascript 在快速路由的请求处理程序中返回值有什么作用吗?,javascript,express,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'); }); 我看到人们在发送回

问题很简单:在快速路由的请求处理程序中返回值有什么作用吗?


我看到人们返回请求处理程序的响应:

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

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

  return res.send('something else');
});
我看到人们在发送回复后提前返回:

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

  res.send('something else');
  return;
});

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

快速路线对返回值没有任何作用

当你看到这样的东西时:

return res.send(...);
这只是一个缩写:

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


我个人更喜欢第二种形式,因为阅读代码的人可以解释第一种形式,以暗示返回值可能有意义(即使没有)。向上面添加返回值对于单元测试可能很有用。您可以返回一个可以在测试框架中检查的值,并避免使用supertest之类的方法对模块或类进行基本测试。

我认为可以返回一个传递给响应的字符串(如res.write()),但是在这种情况下,与AIK没有区别。没有区别。双方的目标都是尽早退出。我更愿意使用单独的返回语句,以避免产生返回值很重要的印象。有时您还会发现
返回console.log('error occurrent',err)
。这是一条误导人的捷径。