JavaScriptでデバウンス関数を作成するサンプルコードを以下に示します：

```
function debounce(func, wait, immediate) {
  let timeout;

  return function executedFunction() {
    let context = this;
    let args = arguments;
    
    let later = function() {
      timeout = null;
      if (!immediate) func.apply(context, args);
    };

    let callNow = immediate && !timeout;
    
    clearTimeout(timeout);
    
    timeout = setTimeout(later, wait);
    
    if (callNow) func.apply(context, args);
  };
};
```

デバウンス関数は、アクティビティが停止するまで関数の実行を遅延させるために使用します。この関数は3つの引数を受け取ります：funcはデバウンスする関数、waitは関数が実行される前に経過しなければならないミリ秒数、immediateは関数が最初に即座に実行されるべきかどうかを示すフラグです。

デバウンス関数は、元の関数をラップして遅延させた新しい関数を返します。デバウンス関数が呼ばれるたびに、タイマーは再起動される。デバウンス関数が呼び出されないままタイムアウトに達すると、元の関数が実行されます。これは、イベントハンドラをDOM要素に割り当て、ユーザがタイピングや他のアクションを実行している間の不要な呼び出しを避けたい場合など、関数呼び出しのオーバーヘッドを避ける必要がある場合に便利です。
Aquí hay un ejemplo de código para crear una función debounce en JavaScript:
function debounce(func, wait, immediate) {
  let timeout;

  return function executedFunction() {
    let context = this;
    let args = arguments;
    
    let later = function() {
      timeout = null;
      if (!immediate) func.apply(context, args);
    };

    let callNow = immediate && !timeout;
    
    clearTimeout(timeout);
    
    timeout = setTimeout(later, wait);
    
    if (callNow) func.apply(context, args);
  };
};

La función debounce se utiliza para retrasar la ejecución de una función hasta que se haya detenido la actividad. La función acepta tres argumentos: func, que es la función a debouncer, wait, que es el número de milisegundos que deben transcurrir antes de que se ejecute la función, y immediate, que es un indicador que indica si la función se debe ejecutar inmediatamente la primera vez.

La función debounce devuelve una nueva función que envuelve la función original y la retrasa. Cada vez que se llama a la función debounce, se reinicia el temporizador. Si se alcanza el tiempo de espera sin que se llame a la función debounce, se ejecuta la función original. Esto es útil en situaciones donde se necesita evitar la sobrecarga de llamadas a una función, como cuando se asigna un controlador de eventos a un elemento del DOM y se quiere evitar llamadas innecesarias mientras el usuario está escribiendo o realizando otras acciones.