
为什么babel编译会把递归转为while循环
会带来性能的提升!
babel
生成代码会把递归转换为while (1)
循环,因此探究:
递归的优点:结构清晰,可读性强
递归的缺点:效率低,调用栈可能会溢出,函数每次调用都会在内存栈中分配空间,而每个进程的容量是有限的,当调用的层次太多时,就会超出栈的容量,从而导致溢出
循环不会创建新的执行环境,因此也不会形成闭包,每次迭代都是在同一个执行环境下,修改的只是相关变量,换言之循环空间复杂度的边际成本非常低
会带来性能的提升!
babel
生成代码会把递归转换为while (1)
循环,因此探究:
递归的优点:结构清晰,可读性强
递归的缺点:效率低,调用栈可能会溢出,函数每次调用都会在内存栈中分配空间,而每个进程的容量是有限的,当调用的层次太多时,就会超出栈的容量,从而导致溢出
循环不会创建新的执行环境,因此也不会形成闭包,每次迭代都是在同一个执行环境下,修改的只是相关变量,换言之循环空间复杂度的边际成本非常低