1
okface OP 不会整理代码。。各位放到格式化工具里看一下吧。。。
|
2
semut 2018-01-16 19:40:54 +08:00
不懂 js,但是这个排版可以调整下,看着真难受
|
3
feverzsj 2018-01-16 19:47:59 +08:00
v8 现在应该可以自动去除尾递归的,可能是你的 node 版本太老了,不行就改成迭代好了
|
4
okface OP |
5
mdluo 2018-02-05 12:36:45 +08:00 1
1. 能用循环做的事情就不要用递归,递归相比循环有相当大的性能差距。
2. node.js 只有特定几个版本有尾递归优化,而且需要 flag 来开启,最新版本是没有的( http://node.green/),函数调用的 Maximum call stack size 就是一个一万多的值。另外,ES6 里的尾递归优化是需要有 return 才可以的。 2. 大文件读取尽量用 Stream,可以指定分块的长度,而且不会一直阻塞 event loop. 3. 如果一定要用递归才能实现的逻辑,通过 setTimeout(func, 0)、setImmediate(func)、或者 process.nextTick(func) 把把递归的深度从 call stack 转移到 task queue. 4. 另外代码优化相关的,能在循环外通过局部变量存起来的值就不用在循环里用函数调用去读取。 |