我在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)
消息打印在控制台上。
如果回调在调用之前被定义,为什么会被调用,但如果之后定义了回调则没有?
答案 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中编写它。