coffeescript:在调用之前定义回调

时间:2013-06-22 20:03:25

标签: node.js callback coffeescript

我在coffeescript中编写了一个基本的node.js web服务器。我写的时候:

server.listen(3000, listener)
listener = () ->
  console.log 'server listening on port 3000'

它启动服务器,但不打印消息。所以我认为回调没有被调用。另一方面,当我这样做时:

listener = () ->
  console.log 'server listening on port 3000'
server.listen(3000, listener)

消息打印在控制台上。

如果回调在调用之前被定义,为什么会被调用,但如果之后定义了回调则没有?

1 个答案:

答案 0 :(得分:2)

由于CoffeeScript函数定义的工作方式,您的第一个代码段在JavaScript中与此类似:

var message;
console.log(message()); // message is undefined at this point
message = function() { return "Hello World!"; };
首次访问时,

message不存在,因此会引发错误。这听起来像你想要的:

console.log(message());
function message() { return "Hello World!"; }

哪种方法很好,但是AFAIK,没有办法在CoffeeScript中编写它。