कंडिशनल कमेंट्स
विशेष कमेंट्स की मदद से आप अपने कोड के चुनिंदा हिस्सों के लिए ऑब्फ़स्केशन बंद कर सकते हैं।
यह तब उपयोगी है जब आपको कुछ विशिष्ट कॉन्फ़िगरेशन ब्लॉक या संस्करण स्ट्रिंग आउटपुट में पढ़ने योग्य रखने हों, और बाकी फ़ाइल का ऑब्फ़स्केशन भी न छोड़ना हो।
ऑब्फ़स्केटर ये कमेंट्स अपने इनपुट से पढ़ता है, इसलिए ऑब्फ़स्केशन से पहले चलने वाले हर बिल्ड चरण में इन्हें बनाए रखें; अगर कोई मिनिफ़ायर पहले ही कमेंट्स हटा देता है, तो ये भी हट जाते हैं।
"disable" वास्तव में क्या छोड़ता है
बंद किया गया क्षेत्र केवल अपने अंदर के नोड्स के प्रत्यक्ष ट्रांसफ़ॉर्मेशन छोड़ता है - यानी किसी डिक्लेरेशन को उसी जगह ऑब्फ़स्केट करना जहाँ वह घोषित होता है। चाइल्ड ट्रांसफ़ॉर्मेशन फिर भी लागू होते हैं, इसलिए बंद ब्लॉक के अंदर किसी ऐसे आइडेंटिफ़ायर का संदर्भ, जिसका नाम कहीं और उसके डिक्लेरेशन पर बदला गया था, फिर भी बदला जाता है:
अगर आपको किसी नाम को हर जगह पढ़ने योग्य रखना है, तो एक ब्लॉक को बंद करना काफ़ी नहीं है; उसके डिक्लेरेशन को भी ऑब्फ़स्केट होने वाले क्षेत्र से बाहर रखें, या reservedNames का उपयोग करें।
vmObfuscation के साथ, disable केवल पूरे फ़ंक्शनों पर काम करता है। बंद क्षेत्र के अंदर का कोई फ़ंक्शन वर्चुअलाइज़ नहीं होता। वर्चुअलाइज़ होने वाले किसी फ़ंक्शन के अंदर मौजूद बंद क्षेत्र फिर भी बाइटकोड में कंपाइल होता है, उस फ़ंक्शन की बाकी बॉडी के साथ - पढ़ने योग्य रूप नहीं बचता। केवल वह कोड जो रूट-लेवल पर बंद किया गया हो (किसी भी वर्चुअलाइज़ होने वाले फ़ंक्शन के बाहर), आउटपुट में सादा रहता है।
