【发布时间】:2016-07-22 10:22:26
【问题描述】:
虽然我有多年的编程经验(使用多种语言),但我的背景不是 Javascript。除此之外,今天的 Javascript 并不是我多年前第一次使用的 Javascript。它更加复杂和强大。也就是说,我正在努力理解一些函数负载动态。
函数实际返回某些内容的函数调用很直观,但 Javascript 似乎对我无法理解的函数做了一些事情。我可以只是复制/粘贴代码,或者我可以尝试找出如何在我自己的代码中重用这种模式。
例如,下面的 Mongoose 调用会查找 User 模型中的所有记录,并且调用的结果以某种方式最终出现在传递函数的第二个参数中(通过引用?)。
User.find({}, function(err, users) { // Get all the users
if (err) throw err;
console.log(users); // Show the JSON Object
});
这是另一个在数组上使用简单 forEach 的示例。不知何故,forEach 填充了“用户”参数。
users.forEach(function(user) {
console.log(user.username, ': Admin = ', (user.admin ? 'Yes' : 'No'));
});
谁能解释一下,和/或给我一个关于它如何/为什么起作用的好指南?
我在 Node.js 中看到了相同的模式,这有点像绊脚石。
我是否遗漏了一些明显的东西,或者这只是函数式编程的一个特点?
乔恩
【问题讨论】:
-
研究
javascript callbacks. -
或Continuation Passing Style,如果您想更全面地了解该技术。
-
这种风格并没有什么新东西。最早的 javascript 版本使用回调作为事件处理程序。
-
感谢围绕回调的 cmets。我很感激花时间做出回应。我以为我知道回调是如何工作的,但我在这里看不到回调相关性。这不是关于在某些其他功能之后(在被调用的函数内)执行的函数,也不是用于在上下文中驱动某些顺序同步处理。我认为@naomik 有一个很好的观点,我不知道 CPS。
-
见下面的 cmets。我现在可以看到回调相关性了。
标签: javascript node.js functional-programming return-by-reference