相关疑难解决方法(0)

Node.js尾调用优化:可能与否?

我喜欢的JavaScript到目前为止,并决定使用Node.js的为我的发动机的部分原因是因为这个,它声称的Node.js提供TCO.但是,当我尝试使用Node.js运行此代码(显然是尾部调用)时,会导致堆栈溢出:

function foo(x) {
    if (x == 1) {
        return 1;
    }
    else {
        return foo(x-1);
    }
}

foo(100000);
Run Code Online (Sandbox Code Playgroud)

现在,我做了一些挖掘,我找到了这个.在这里,似乎我应该这样写:

function* foo(x) {
    if (x == 1) {
        return 1;
    }
    else {
        yield foo(x-1);
    }
}

foo(100000);
Run Code Online (Sandbox Code Playgroud)

但是,这给了我语法错误.我试过它的各种排列,但在所有的情况下,Node.js的似乎不满的东西.

基本上,我想知道以下内容:

  1. Node.js是否执行TCO?
  2. 这个神奇的yield东西在Node.js中如何运作?

javascript tail-call-optimization node.js

23
推荐指数
1
解决办法
9581
查看次数