(Javascript)为什么函数不带参数

时间:2013-07-09 01:12:37

标签: javascript node.js

这是NodeJS的东西,代码是:

var http = require("http");

function onRequest(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();
}

http.createServer(onRequest).listen(8888);

我的问题是如何进入最后一行,函数onRequest不带参数..我是Javascript的新手但是onRequest不应该采用函数中定义的2个参数?有人可以帮我吗?我被困了一个小时:(

2 个答案:

答案 0 :(得分:2)

你实际上并没有调用这个方法。你告诉createServer它的requestListener回调函数是什么。

来自node.js文档(http://nodejs.org/api/http.html#http_http_createserver_requestlistener):

  

http.createServer([requestListener])

     

返回一个新的Web服务器对象。

     

requestListener是一个自动添加到的函数   'request'事件。

答案 1 :(得分:1)

执行onRequest函数需要2个参数。

你的最后一行:

http.createServer(onRequest).listen(8888);

实际上并没有执行onRequest,虽然我可以理解为什么你会这么认为。它将对onRequest函数的引用传递给http.createServer函数/方法。

createServer将保存指向onRequest函数的指针,然后当请求进入服务器时,它将执行onRequest。该执行将包括请求和响应参数。

有关详细信息,本文对此模式提供了相当简单明了的解释,称为回调。它通常与异步编程一起使用,但不一定。

http://recurial.com/programming/understanding-callback-functions-in-javascript/