Documentación
/
Ofuscación VM
/

Compatibilidad con el modo estricto

Compatibilidad con el modo estricto

Importante

La ofuscación VM necesita saber en tiempo de compilación si el código se ejecuta en modo estricto. Si tu código depende del comportamiento del modo estricto, debes declararlo explícitamente.

¿Por qué? La VM compila tu código a bytecode antes de ejecutarlo. Necesita conocer el contexto de modo estricto durante la compilación para generar un bytecode correcto para los comportamientos propios del modo estricto (por ejemplo, el enlace de this, los parámetros duplicados o el comportamiento del objeto arguments).

La opción strictMode controla cómo decide el ofuscador. Con strictMode: null (el valor predeterminado) y strictMode: false, el código se trata como estricto solo donde lo declara: una directiva 'use strict'; explícita, sintaxis de módulos ES o métodos de clase. Todo lo demás se compila en modo no estricto. strictMode: true trata toda la entrada como estricta. Haz que coincida con el contexto en el que realmente se ejecuta el bundle final.

Modo estricto a nivel de archivo

Añade 'use strict'; al principio del archivo para activar el modo estricto en todo el código:

JavaScript

Modo estricto a nivel de función

Añade 'use strict'; dentro de funciones concretas si solo algunas de ellas necesitan el modo estricto:

JavaScript

Problema habitual: si tu bundler o herramienta de compilación añade 'use strict'; automáticamente (por ejemplo, un bundler que envuelve fuentes CommonJS o scripts simples en una salida en modo estricto), pero ofuscas el código fuente antes de empaquetarlo, la VM no sabrá nada del modo estricto. Añade la directiva a tus archivos fuente, establece strictMode: true u ofusca después de empaquetar.