Strict Mode Uyumluluğu
VM obfuscation, kodun strict mode içinde çalışıp çalışmadığını derleme anında bilmek zorundadır. Kodunuz strict mode davranışına dayanıyorsa bunu açıkça bildirmeniz gerekir.
Neden? VM, kodunuzu yürütmeden önce bayt koduna derler. Strict mode'a özgü davranışlar (örn. this bağlaması, yinelenen
parametreler, arguments nesnesinin davranışı) için doğru bayt kodunu üretebilmek amacıyla derleme sırasında strict mode
bağlamını bilmesi gerekir.
strictMode seçeneği, obfuscator aracının nasıl karar vereceğini belirler. strictMode: null (varsayılan) ve strictMode: false ile kod yalnızca bunu bildirdiği yerlerde strict olarak ele alınır: açık bir 'use strict'; direktifi, ES modül söz dizimi veya sınıf metotları. Geri kalan her şey sloppy mode olarak derlenir. strictMode: true tüm girdiyi strict olarak ele alır. Son paketin gerçekte çalıştığı bağlamla eşleştirin.
Dosya düzeyinde strict mode
Tüm kod için strict mode'u etkinleştirmek üzere dosyanızın en üstüne 'use strict'; ekleyin:
Fonksiyon düzeyinde strict mode
Yalnızca belirli fonksiyonların strict mode'a ihtiyacı varsa 'use strict'; ifadesini bu fonksiyonların içine ekleyin:
Yaygın sorun: Paketleyiciniz veya derleme aracınız 'use strict'; ifadesini otomatik olarak ekliyorsa (örneğin CommonJS veya düz betik kaynaklarını
strict mode çıktısıyla saran bir paketleyici) ancak kaynağı paketlemeden önce obfuscate ediyorsanız, VM strict mode'dan haberdar olmaz. Ya direktifi
kaynak dosyalarınıza ekleyin, ya strictMode: true ayarlayın ya da paketlemeden sonra obfuscate edin.
