Javascript 为什么要在http.createServer()中返回一个值呢

Javascript 为什么要在http.createServer()中返回一个值呢,javascript,node.js,Javascript,Node.js,我正在做learnyounode研讨会,我对其中一个官方解决方案的片段很好奇 var server = http.createServer(function (req, res) { if (req.method != 'POST') return res.end('send me a POST\n') }) 我只是好奇他们为什么要费心返回一个值。您可以只调用res.end(),它将按预期工作(正如我所预期的那样)。看起来end()只是返回一个布尔值,但我不明白为什么需要或想要返回

我正在做learnyounode研讨会,我对其中一个官方解决方案的片段很好奇

var server = http.createServer(function (req, res) {
  if (req.method != 'POST')
    return res.end('send me a POST\n')
})

我只是好奇他们为什么要费心返回一个值。您可以只调用res.end(),它将按预期工作(正如我所预期的那样)。看起来end()只是返回一个布尔值,但我不明白为什么需要或想要返回任何内容

此函数的返回值实际上不会去任何地方,尽管理论上它可以:

http.createServer = function (cb) {
    if (cb()) { /* do something */ }
};
据我所知,
.createServer
实际上没有出于任何原因在内部执行此操作。在这种情况下,您希望使用
return
的原因是为了使函数执行短路,例如:

var server = http.createServer(function (req, res) {
  if (req.method != 'POST')
    return res.end('send me a POST\n')

  res.end('POST sent\n');
})

当然,
if
/
else
可能会阻止函数继续执行,但出于以下原因之一,您可以在回调函数中使用
return

此函数的返回值实际上不会去任何地方,尽管理论上可能:

http.createServer = function (cb) {
    if (cb()) { /* do something */ }
};
据我所知,
.createServer
实际上没有出于任何原因在内部执行此操作。在这种情况下,您希望使用
return
的原因是为了使函数执行短路,例如:

var server = http.createServer(function (req, res) {
  if (req.method != 'POST')
    return res.end('send me a POST\n')

  res.end('POST sent\n');
})

当然,
if
/
else
可能会阻止函数的继续执行,但出于以下任一原因,您可以在回调函数中使用
return

传递给http.createServer的函数将添加到EventEmitter实例中

忽略传递给EventEmitter的侦听器返回的返回值


因此,在本例中使用
return
语句的唯一好处是可以更早地返回,并在函数存在的情况下忽略函数的其余部分,正如所说。

传递给http.createServer的函数被添加到EventEmitter实例中

忽略传递给EventEmitter的侦听器返回的返回值


因此,在本例中使用
return
语句的唯一好处是可以更早地返回,并在函数存在时忽略函数的其余部分,正如所说的那样。

如果在res.end之后有代码,并且没有返回(退出),那么其余的代码也会运行。@dave Chen这一点很好。我想我只是好奇返回值是否由nodejs内部使用。基本上,如果我处理完请求后没有返回true/false,我是不是做错了?如果res.end之后有代码,而你没有返回(退出),那么其余的代码也会运行。@dave Chen说得好。我想我只是好奇返回值是否由nodejs内部使用。基本上,如果我处理完请求后没有返回true/false,我是否做错了?