在socket.io聊天示例代码中的fn()的含义

我正在尝试从socket.io/examples/chat/app.js中了解代码。 我无法解释71和73行中fn()意思。我想这是一个callback函数,但是它的定义在哪里? 它是从app.js的另一个函数的简短调用?…
这是套接字对象的原型函数的调用吗?

该片段是(第69-78行):

 [...] socket.on('nickname', function (nick, fn) { if (nicknames[nick]) { fn(true); } else { fn(false); nicknames[nick] = socket.nickname = nick; socket.broadcast.emit('announcement', nick + ' connected'); io.sockets.emit('nicknames', nicknames); } }); [...] 

fn作为parameter passing给callback函数,在这里:

 socket.on('nickname', function (nick, fn) { ^^ 

由于JavaScript函数是对象,它们可以存储在variables中,并作为parameter passing给其他函数。

在这个特定的情况下使用callback函数是在Socket.IO文档的“Getting acknowledgements”一节中讨论的 – 使用一些数据调用它,将消息发送回客户端作为对该消息的响应。

fn是对另一个函数的引用,该函数正在从昵称事件中调用。

在JavaScript中,函数被视为对象,所以它们可以在callback函数中作为parameter passing。