木灵鱼儿
你不知道的JavaScript
尾调用优化
什么是尾调用优化函数的调用会在内存中形成一个调用记录,被称为调用帧,调用帧会保留调用位置和内部变量等信息,一个个调用帧形成了调用栈。而尾部调用优化,意思是:如果一个函数的结尾调用了一个函数,且这个函数不需要依赖当前函数的调用帧,那么就会只保留尾部调用的这个函数调用帧,从而节省内存。es6要求引擎实现尾部调用优化(TCO),因为如果没有TCO会导致一些JavaScript算法因为害怕调用栈限制而降低了通过递归实现的效率。由于缺失TCO确实会导致一些程序无法实现,所以它变成了一个重要的语言特性而不是隐藏的实现细节。es6确保了JavaScript开发者从现在开始可以在所有符合es6+的浏览器...
最近评论