返回

解惑手写函数:防抖、节流和斐波那契的魅力

前端

在浩瀚的编程世界中,有一些函数如繁星般闪烁着独一无二的光芒,它们分别是防抖、节流和斐波那契。这篇文章将为你揭开这些函数的神秘面纱,让你了解它们是如何为你的代码增添魅力的。

防抖函数

防抖函数是一个有耐心的战士,它不会因为你的一时冲动而盲目行动。它等待一段时间,确保你的意图坚定后才执行。这在处理用户输入时非常有用,可以防止多次连续点击导致不必要的操作。

节流函数

节流函数则是一个严格的守卫者,它限制函数执行的频率,无论你多么心急,它都不会屈服。这在需要限制每秒请求次数或防止过度渲染的场景中至关重要。

斐波那契数列

斐波那契数列是一个令人着迷的数学概念,其魅力在于每个数字都是前两个数字之和。从历史上看,它被用于生物体的生长模式和艺术中的对称性。

在 Python 和 JavaScript 中实现

为了让你更深入地理解这些函数,我们将在 Python 和 JavaScript 中实现它们:

Python 中的防抖和节流

import time
from functools import wraps

def debounce(delay):
    def decorator(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            def inner():
                func(*args, **kwargs)
            timer = time.time() + delay
            return inner
        return wrapper
    return decorator

def throttle(delay):
    def decorator(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            now = time.time()
            if now - wrapper.last_called >= delay:
                wrapper.last_called = now
                func(*args, **kwargs)
        wrapper.last_called = 0.0
        return wrapper
    return decorator

JavaScript 中的斐波那契

function fibonacci(n) {
  if (n === 0) {
    return 0;
  } else if (n === 1) {
    return 1;
  } else {
    return fibonacci(n - 1) + fibonacci(n - 2);
  }
}

用例

这些函数在许多场景中都很有用:

  • 防抖函数可用于延迟表单提交或搜索框输入,防止不必要的请求。
  • 节流函数可用于限制页面滚动或窗口大小调整事件的处理频率。
  • 斐波那契数列可用于创建螺旋图案、生成随机数或建模自然现象。