相关疑难解决方法(0)

延续和回调之间有什么区别?

我一直在浏览整个网络,寻找关于延续的启示,并且令人难以置信的是,最简单的解释如何能够如此完全混淆像我这样的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 continuations callcc continuation-passing

125
推荐指数
3
解决办法
2万
查看次数

Firefox,Chrome,Safari,IE等的js递归限制是什么?

我有一些使用相当深的递归的Javascript代码,我想知道各种浏览器中的递归限制是什么(即错误"过多的递归"将发生的点).

根据版本,任何人都有这方面的任何实数?

javascript recursion

36
推荐指数
2
解决办法
1万
查看次数

什么是尾递归消除?

Steve Yegge在一篇博客文章中提及它,我不知道这意味着什么,有人可以填写我吗?

它与尾部调用优化是一回事吗?

language-agnostic recursion tail-recursion tail-call-optimization program-transformation

33
推荐指数
2
解决办法
8449
查看次数