Kompatibilitas Strict Mode
Obfuskasi VM perlu mengetahui saat kompilasi apakah kode berjalan dalam strict mode. Jika kode Anda bergantung pada perilaku strict mode, Anda harus mendeklarasikannya secara eksplisit.
Mengapa? VM mengompilasi kode Anda menjadi bytecode sebelum eksekusi. VM perlu mengetahui konteks strict mode selama
kompilasi untuk menghasilkan bytecode yang benar bagi perilaku khusus strict mode (misalnya binding this, parameter
duplikat, perilaku objek arguments).
Opsi strictMode mengendalikan cara obfuscator memutuskannya. Dengan strictMode: null (bawaan) dan strictMode: false, kode diperlakukan sebagai strict hanya di tempat yang mendeklarasikannya: direktif 'use strict'; yang eksplisit, sintaks modul ES, atau metode kelas. Semua yang lain dikompilasi dalam sloppy mode. strictMode: true memperlakukan seluruh masukan sebagai strict. Sesuaikan dengan konteks tempat bundel akhir benar-benar berjalan.
Strict Mode Tingkat Berkas
Tambahkan 'use strict'; di bagian atas berkas Anda untuk mengaktifkan strict mode bagi seluruh kode:
Strict Mode Tingkat Fungsi
Tambahkan 'use strict'; di dalam fungsi tertentu jika hanya fungsi-fungsi tertentu yang memerlukan strict mode:
Masalah umum: Jika bundler atau alat build Anda menambahkan 'use strict'; secara otomatis (misalnya bundler yang membungkus
sumber CommonJS atau skrip biasa dalam keluaran strict mode), tetapi Anda mengobfuskasi kode sumber sebelum bundling, VM tidak akan
mengetahui adanya strict mode. Tambahkan direktif tersebut ke berkas sumber Anda, setel strictMode: true, atau lakukan obfuskasi setelah
bundling.
