Documentation
/
Obfuscation VM
/

Compatibilité avec le mode strict

Compatibilité avec le mode strict

Important

L'obfuscation VM doit savoir dès la compilation si le code s'exécute en mode strict. Si votre code dépend du comportement du mode strict, vous devez le déclarer explicitement.

Pourquoi ? La VM compile votre code en bytecode avant son exécution. Elle doit connaître le contexte de mode strict pendant la compilation pour générer un bytecode correct pour les comportements propres au mode strict (par exemple la liaison de this, les paramètres en double, le comportement de l'objet arguments).

L'option strictMode détermine la façon dont l'obfuscateur décide. Avec strictMode: null (par défaut) et strictMode: false, le code n'est considéré comme strict que là où il le déclare : une directive 'use strict'; explicite, la syntaxe des modules ES ou les méthodes de classe. Tout le reste est compilé en mode non strict (sloppy mode). strictMode: true traite toute l'entrée comme stricte. Alignez-vous sur le contexte dans lequel le bundle final s'exécute réellement.

Mode strict au niveau du fichier

Ajoutez 'use strict'; en tête de votre fichier pour activer le mode strict pour tout le code :

JavaScript

Mode strict au niveau de la fonction

Ajoutez 'use strict'; à l'intérieur de fonctions précises si seules certaines d'entre elles ont besoin du mode strict :

JavaScript

Problème fréquent : si votre bundler ou votre outil de build ajoute automatiquement 'use strict'; (par exemple un bundler qui enveloppe des sources CommonJS ou des scripts classiques dans une sortie en mode strict), mais que vous obfusquez le source avant le bundling, la VM ne saura rien du mode strict. Ajoutez la directive à vos fichiers source, définissez strictMode: true, ou obfusquez après le bundling.