Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的尾部调用优化不起作用_Javascript_Node.js - Fatal编程技术网

javascript中的尾部调用优化不起作用

javascript中的尾部调用优化不起作用,javascript,node.js,Javascript,Node.js,ECMAScript 6引入了尾部调用优化(TCO),我编写了下一段代码 'use strict'; var isStrict = (function() { return !this; })(); function add5(a,total=0){ if(a==1)return total+a; return add5(a-1,total+a); } add5(100000); 并在chrome(57.0.2987.133(64位))中运行 严格模式似乎已启用,但尾部调用

ECMAScript 6引入了尾部调用优化(TCO),我编写了下一段代码

'use strict';
var isStrict = (function() { return !this; })();
function add5(a,total=0){
    if(a==1)return total+a;
    return add5(a-1,total+a);
}

add5(100000); 
并在chrome(57.0.2987.133(64位))中运行


严格模式似乎已启用,但尾部调用优化不起作用,任何人都可以帮我一个忙并告诉我原因?

似乎v8.1.0确实支持TCO
版本为v7.10.x、v7.5.x、v6.11.x的节点可能可以工作,并且它可以在v7.10.0下找到--harmony标志,正如我尝试的那样。

看起来v8.1.0确实支持TCO
版本为v7.10.x、v7.5.x、v6.11.x的节点可以工作,并且在v7.10.0下可以找到它,正如我尝试的那样,它可以使用--harmony标志。

它只在版本为
--harmony\u tailcalls
的节点中工作,即使在版本为
8.1.0
的情况下也是如此

function addFive(a, total){
  'use strict';
  if(a < 1) return total;
  return addFive(a-1, total+a);
}

addFive(100000, 0);
功能添加五(a,总计){
"严格使用",;
如果(a<1)返回总数;
返回addFive(a-1,总计+a);
}
加五(100000,0);

即使在
8.1.0
版本上,它也只在带有
--harmony\u tailcalls
的节点中工作

function addFive(a, total){
  'use strict';
  if(a < 1) return total;
  return addFive(a-1, total+a);
}

addFive(100000, 0);
功能添加五(a,总计){
"严格使用",;
如果(a<1)返回总数;
返回addFive(a-1,总计+a);
}
加五(100000,0);

@Rajesh:我认为这篇文章与此无关。TCO正常工作时,堆栈不会增长。在没有任何标志的NodeV6.9.0中对我有效,但您可能希望尝试
Node--harmony
。节点v8.1.0似乎确实支持@Rajesh的TCO:我认为这篇文章与此无关。TCO正常工作时,堆栈不会增长。在没有任何标志的NodeV6.9.0中对我有效,但您可能希望尝试
Node--harmony
。节点v8.1.0似乎确实支持TCO,感谢,节点--v8选项| grep“harmony”,TCO是节点v8.1.0中的“进程中”特性,节点--v8选项| grep“harmony”,TCO是节点v8.1.0中的“进程中”特性
function addFive(a, total){
  'use strict';
  if(a < 1) return total;
  return addFive(a-1, total+a);
}

addFive(100000, 0);