He estado refactorizando un código heredado y encontré el siguiente ejemplo:
// inside other function const isTriggerValid = await (async () => { try { const triggers = await db.any(getTriggerBeforeBook, { paramId }); if (!triggers || triggers.length === 0) { return false; } return true; } catch (e) { logger.error(e); return false; } })();y me gustaría preguntar, ¿cuál es el punto entre él y el código a continuación?
const isTriggerValid = async (paramId) => { try { const triggers = await db.any(getTriggerBeforeBook, { paramId }); if (!triggers || triggers.length === 0) { return false; } return true; } catch { return true; } } ¿Y luego invocarlo con const trigger = await isTriggerValid(paramId) ?
Estoy absolutamente seguro de que this palabra clave no se ha utilizado en él.
La principal diferencia sería que en la versión anterior isTriggerValid sería el resultado de las funciones y en la nueva es una función y el resultado se llamaría trigger . Aparte de eso, ambos están invocando la misma función.
Con respecto a su preocupación sobre this . En ambas variantes, es una función de flecha que hereda el contexto principal, por lo que, incluso si se usara, sería la misma en ambas.