Dokumentasi
/
Obfuskasi VM
/

Kompatibilitas Strict Mode

Kompatibilitas Strict Mode

Penting

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:

JavaScript

Strict Mode Tingkat Fungsi

Tambahkan 'use strict'; di dalam fungsi tertentu jika hanya fungsi-fungsi tertentu yang memerlukan strict mode:

JavaScript

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.