Dokumentation
/
VM-Obfuskierung
/

Kompatibilität mit dem Strict Mode

Kompatibilität mit dem Strict Mode

Wichtig

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:

JavaScript

Strict Mode auf Funktionsebene

Fügen Sie 'use strict'; innerhalb bestimmter Funktionen ein, wenn nur einzelne Funktionen den Strict Mode benötigen:

JavaScript

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.