Kompatibilität mit dem Strict Mode
Die VM-Obfuskierung muss zur Kompilierzeit wissen, ob Code im Strict Mode läuft. Wenn Ihr Code auf Strict-Mode-Verhalten angewiesen ist, müssen Sie dies ausdrücklich deklarieren.
Warum? Die VM kompiliert Ihren Code vor der Ausführung in Bytecode. Sie muss den Strict-Mode-Kontext während
der Kompilierung kennen, um für Strict-Mode-spezifisches Verhalten (z. B. die Bindung von this, doppelte
Parameter, das Verhalten des arguments-Objekts) korrekten Bytecode zu erzeugen.
Die Option strictMode steuert, wie der Obfuscator entscheidet. Mit strictMode: null (Standard) und strictMode: false gilt Code nur dort als strikt, wo er es deklariert: durch eine explizite 'use strict';-Direktive, ES-Modul-Syntax oder Klassenmethoden. Alles andere wird im Sloppy Mode kompiliert. strictMode: true behandelt die gesamte Eingabe als strikt. Richten Sie sich nach dem Kontext, in dem das fertige Bundle tatsächlich läuft.
Strict Mode auf Dateiebene
Fügen Sie 'use strict'; am Anfang Ihrer Datei ein, um den Strict Mode für den gesamten Code zu aktivieren:
Strict Mode auf Funktionsebene
Fügen Sie 'use strict'; innerhalb bestimmter Funktionen ein, wenn nur einzelne Funktionen den Strict Mode benötigen:
Häufiges Problem: Wenn Ihr Bundler oder Build-Werkzeug 'use strict'; automatisch hinzufügt (zum Beispiel ein Bundler, der
CommonJS- oder einfache Skriptquellen in Strict-Mode-Ausgabe einschließt), Sie den Quellcode aber vor dem Bündeln obfuskieren,
weiß die VM nichts vom Strict Mode. Fügen Sie die Direktive entweder Ihren Quelldateien hinzu, setzen Sie strictMode: true
oder obfuskieren Sie nach dem Bündeln.
