尾调用
尾调用( Tail Call )是函数式编程的一个重要概念,本身非常简单,一句话就能说清楚,就是指某个函数的最后一步是调用另一个函数。
1、尾调用,必须是return 并且必须是函数
2、尾调用不一定出现在函数尾部,只要是最后一步操作即可。
ES6的严格模式
ES6 的尾调用优化只在严格模式下开启,所以开启严格模式就可以进行尾调用优化
操作如下
"use strict";
// 代码块
尾递归
函数调用自身,称为递归。如果尾调用自身,就称为尾递归。
尾递归的实现,往往需要改写递归函数,确保最后一步只调用自身。做到这一点的方法,就是把所有用到的内部变量改写成函数的参数
递归非常耗费内存,因为需要同时保存成千上百个调用帧,很容易发生 “ 栈溢出 ” 错误( stack overflow )。但对于尾递归来说,由于只存在一个调用帧,所以永远不会发生 “ 栈溢出 ” 错误。
网友评论