javascript – 这个例子中的fn是什么?

在这个例子中,有一个带有null和false参数的fn函数:

io.configure(function () {
  function auth (data, fn) {
    fn(null, false);
  };

  io.set('authorization', auth);
});

https://github.com/LearnBoost/Socket.IO-node/blob/master/test/manager.test.js#L400-403

什么是fn,它做了什么?

它只是意味着,示例功能,在这里坚持自己的功能,还是意味着别的?

最佳答案 在这个例子中,fn是一个作为参数传递给auth()的函数,所以是的,你为auth()提供了一些你自己选择的功能.这称为“高阶函数”,简要介绍见
here.这是一种主要与
functional programming相关的技术,并且因为Javascript的面向对象通常被认为有点弱,所以Javascript中的更高级程序的风格往往是(Javascript有时被称为“
Scheme in Java’s clothing”)

在这个确切的代码中:它是测试套件的一部分,因此它将io配置为总是失败授权,以便看到授权失败得到优雅处理(目前408-409行):

res.statusCode.should.eql(403);
data.should.match(/handshake unauthorized/);

应该无异常地到达这些行,并且测试检查结果是否包含有意义的值.

点赞