我一直在浏览整个网络,寻找关于延续的启示,并且令人难以置信的是,最简单的解释如何能够如此完全混淆像我这样的JavaScript程序员.当大多数文章使用Scheme中的代码解释延续或使用monad时尤其如此.
现在我终于认为我已经理解了延续的本质,我想知道我所知道的是否真的是事实.如果我认为真实的事实并非如此,那么它就是无知而不是启蒙.
所以,这就是我所知道的:
在几乎所有语言中,函数显式地将值(和控制)返回给它们的调用者.例如:
var sum = add(2, 3);
console.log(sum);
function add(x, y) {
return x + y;
}Run Code Online (Sandbox Code Playgroud)
现在,在具有第一类函数的语言中,我们可以将控制和返回值传递给回调,而不是显式返回给调用者:
add(2, 3, function (sum) {
console.log(sum);
});
function add(x, y, cont) {
cont(x + y);
}Run Code Online (Sandbox Code Playgroud)
因此,不是从函数返回值,而是继续使用另一个函数.因此,这个函数被称为第一个的延续.
那么延续和回调之间的区别是什么?
我有一些使用相当深的递归的Javascript代码,我想知道各种浏览器中的递归限制是什么(即错误"过多的递归"将发生的点).
根据版本,任何人都有这方面的任何实数?