- 博客(3)
- 资源 (1)
- 收藏
- 关注
原创 Javascript进阶之尾调用优化
尾调用(Tail Call)指的是在一个函数的最后执行的函数调用,也就是说这个函数调用之后没有任何其他的计算需要执行。由于尾调用是函数的最后一个动作,所以不需要保留当前函数的上下文,这使得编译器或解释器有机会优化内存使用,释放掉当前函数的栈帧,只保留尾调用函数的栈帧,或者复用当前函数的栈帧。这种优化策略就是尾调用优化(Tail Call Optimization, TCO)。更特别的,如果尾调用的对象是自身,就称为尾递归,相应的优化称为尾递归优化。本文通过实验直观演示了node,js的尾递归优化。
2024-08-08 16:02:45
667
原创 Javascript进阶之栈溢出
栈帧(Stack Frame)是内存中用于存储函数调用信息的区域。每当一个函数被调用时,系统都会为其分配一块内存来存储函数的局部变量、参数、返回地址等信息。系统的栈空间是受限于资源的,如果函数调用层次过深,栈空间就会被占满,这就是栈溢出(Stack Overflow)问题。本文讨论了最简单的避免栈溢出的策略:迭代替代递归。
2024-08-08 14:35:01
531
原创 Javascript进阶之柯里化
柯里化(Currying)是一种函数式编程的概念,在JavaScript中可以用来创建灵活且可复用的函数。它指的是将一个接受多个参数的函数转换为一系列函数链,每个函数只接受一个单一的参数,这些函数称为一元函数(Unary)。这个过程中产生的一系列固定了部分参数的函数,就称为偏函数(Partial)。
2024-08-08 00:02:27
487
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人