正在看阮一峰所著的ES6入门,发现有个内容前后矛盾。、书中所说,尾调用优化只在严格模式下开启,但是我使用它尾调用优化后的代码跑,并未开启严格模式也可以正常跑,确实是使用了尾调用优化的。function Fibonacci2 (n , ac1 = 1 , ac2 = 1) { if( n <= 1 ) {return ac2}; return Fibonacci2 (n - 1, ac2, ac1 + ac2);
}
Fibonacci2(100) // 573147844013817200000Fibonacci2(1000) // 7.0330367711422765e+208Fibonacci2(10000) // Infinity我自己本地跑了也确实可以很快跑出来,没有卡死,确实是优化了的,但是这里并没有开启严格模式
1 回答
慕的地10843
TA贡献1785条经验 获得超8个赞
我试了一下,在safari浏览器中,非严格模式下能够正常执行Fibonacci2(10000),但是不能正常执行Fibonacci2(100000)。
你可以将Fibonacci2的参数再增大一点。
我猜不同环境下,JS函数的调用栈大小不同,导致你以为非严格模式下尾递归优化开启了。
添加回答
举报
0/150
提交
取消