jiangbin
jiangbin
补充几个小点,可能更加容易理解: 1、尾调用的概念:某个函数的 最后一步是调用另外一个函数,即成为尾调用。 2、尾调用优化: 当函数最后一步调用另外一个函数(fn1)时,函数(fn1)内部么没有对父层函数的的任何变量有所依赖,或者说所有的依赖的计算都是在父函数中完成的,这时执行这个函数(fn1)时,父函数的执行上下文会被从栈内弹出,从而实现栈内只有 函数(fn1)的执行上下文, *按照我的理解,只有进行了尾调用优化的尾调用才算是有实践意义的 ‘尾调用’; 举例说明: 1、没有进行尾调用 大佬文章的函数执行上下文栈中的例子  在这个例子中函数最后一步的确是调用 另外一个函数,从概念意义上讲,它是一个尾调用,但是由于调用的这个函数仍然依赖父层函数的变量scope ,所有并不会进行尾调用优化,所以它并不能称之为 有实践意义的 ‘尾调用’(可以理解为就是大佬文中所描述的那样的出入栈规则,) 另外 有些浏览器不支持尾调用优化,如chrome 