export const debounce = (callback: Function, ms = 300) => { let timeoutId: ReturnType<typeof setTimeout> return function (...args: any[]) { clearTimeout(timeoutId) timeoutId = setTimeout(() => callback.apply(this, args), ms) } }Quiero hacer que la función de rebote sea una función Util y usarla en todo el proyecto. Sin embargo, si realiza la función que devuelve la función antirrebote como una función de flecha, se produce un error de secuencia de comandos. Esto se vuelve indefinido. ¿La función que devuelve la función de rebote no puede usar la función de flecha? tengo curiosidad por el motivo
export const debounce = (callback: Function, ms = 300) => { let timeoutId: ReturnType<typeof setTimeout> return (...args: any[]) => { clearTimeout(timeoutId) timeoutId = setTimeout(() => callback.apply(this, args), ms) } }Cambiar la función de flecha a un código de retorno de esta manera provoca un error. tengo curiosidad por el motivo
.this función de flecha interna se resolverá léxicamente, lo que significa que el valor de this no depende del sitio de llamada (donde se llama a la función), sino que depende del alcance externo de la función (definido al escribir el código), lo que básicamente significa que lo hará tome this léxicamente del alcance externo (por ejemplo: función externa u objeto de ventana). Y es por eso que no tiene sentido usar flecha con apply para modificar this .