5

使用 Node.js hello world 示例:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

我试图找到 http.js 中的 createServer “寻找”一个函数的位置,然后将其传递给两个对象(上面分别命名为“req”和“res”。我已经搜索了 http.js,唯一的东西我发现是:

exports.createServer = function(requestListener) {
  return new Server(requestListener);
};

这是否意味着匿名函数:

function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}

...作为“requestListener”传递并且...

return new Server(requestListener);

... req 和 res 对象在哪里传回?

4

1 回答 1

1

是的。在 Javascript 中,函数本身就是“值”,您可以分配给“对象”。由于您可以将对象传递给另一个函数,因此您可以将函数本身作为对象传递。

requestListener是被createServer命名为requestListener用于调用Server constructor它的参数。

您也可以在 ruby​​ 中看到这一点,您可以在其中调用一个函数,同时将要在 do 块中执行的代码作为参数传递给它。

于 2013-04-14T03:28:42.840 回答