【发布时间】:2019-06-19 14:34:23
【问题描述】:
我遇到了一段代码,我想了解它的实际工作原理,而不仅仅是复制和粘贴它。
大多数基本教程似乎都没有涉及回调函数的语法(或者我只是不理解它们)。我的例子来自passportjs
passport.use(new Strategy(
function(username, password, cb) {
db.users.findByUsername(username, function(err, user) {
if (err) { return cb(err); }
if (!user) { return cb(null, false); }
if (user.password != password) { return cb(null, false); }
return cb(null, user);
});
}));
我想知道的是,如果 'cb' 是函数的参数,那么 return cb(null, user) 在这种情况下的实际含义是什么?这是否意味着执行一个带有参数 null 和 user 的回调函数(这对我来说没有意义)。
【问题讨论】:
-
“这是否意味着执行一个带有参数 null 和 user 的回调函数(这对我来说没有意义)。” - 是的。这有什么不妥之处?
-
如果该函数未在其他地方定义 - 如何执行名为“回调”的函数?更确切地说,一个没有任何相关指令的函数的结果是什么?
-
需要解释概念,这不是这里的目的。我会建议有一些书或任何参考资料,并阅读对你同样没有意义的东西——在这种情况下是 JavaScript。
-
在别处定义。当调用该函数时,它作为参数传递给匿名函数。您可以在代码的第 2 行看到这一点。
-
@tichy255 函数是 JavaScript 中的第一类成员,因此它们可以分配给变量,作为其他函数的参数传递,也可以从函数返回。这类似于您可以对数字或其他对象执行的操作。存储在变量中的函数只需在末尾添加
()即可执行。例如,如果您以(param1, param2, param3)执行它们,您也可以将其他参数传递给函数。在您的情况下,cb持有对该函数的引用,因此使用(null, user)调用它会执行它并传递这些参数。
标签: javascript node.js