Elevación de Expresiones Regulares (RegExp Hoisting)
Crear una expresión regular literal o mediante new RegExp() dentro del cuerpo de una función provoca que el motor V8 de Node.js o el navegador tenga que recompilar el patrón en cada invocación, degradando el rendimiento en tareas repetitivas o bucles de renderizado.
1. Antipatrón vs Patrón Recomendado
// ANTIPATRÓN: Recompila la RegExp en cada iteración del bucle o llamada
function validarColor(hex: string): boolean {
const COLOR_REGEX = /^#[0-9a-fA-F]{3,8}$/;
return COLOR_REGEX.test(hex);
}
// PATRÓN RECOMENDADO: Elevada al ámbito del módulo (compilada una sola vez)
const COLOR_REGEX = /^#[0-9a-fA-F]{3,8}$/;
const OFFSET_REGEX = /^-?\d+px$/;
function validarColor(hex: string): boolean {
return COLOR_REGEX.test(hex);
}2. Aplicación en Ryukami-UI
Este patrón está implementado estrictamente en:
ThemeStudio.astro(validación de inyección CSS).tests/security.test.ts(verificación de seguridad contra ataques XSS).bin/ryukami-ui.mjs(normalización de rutas).