javascript - क्या कॉन्स्टेबल और IIFE पैटर्न को अनावश्यक बना देगा?




scope ecmascript-6 (2)

हां, ब्लॉक IEFE को प्रतिस्थापित करने जा रहे हैं, जैसे ही ब्लॉक-स्कोप की गई घोषणाएं ( functions , let / const / class ) व्यापक रूप से अपनाई जाती हैं। तुम एक गुंजाइश की जरूरत है, जैसे एक बंद करने के लिए? यहां आपके पास एक ब्लॉक है, चाहे वह लूप बॉडी हो या स्टेटमेंट लिस्ट का हिस्सा हो।

हालाँकि, IEFE का एक अनुप्रयोग अभी भी है जो ब्लॉक को प्रतिस्थापित नहीं कर सकता है: मॉड्यूल पैटर्न। ब्लॉक में रिटर्न वैल्यू नहीं होती है, और उच्च-स्कोप किए गए वैरिएबल को बदलना बदसूरत है, इसलिए हम अभी भी उन वस्तुओं के निर्माण में फ़ंक्शन भाव देखेंगे जिन्हें निजी राज्य की आवश्यकता है:

const example = (() => {
    
    return …;
}());

जैसा कि मैं इसे समझता हूं, आईआईएफई पैटर्न इस तथ्य के इर्द-गिर्द का काम है कि ईएस 5 और नीचे ब्लॉक स्कोप बनाने का एक तरीका नहीं है। किसी फ़ंक्शन में सब कुछ लपेटकर और तुरंत इसे लागू करके, हम एक गुंजाइश बना सकते हैं।

अब जब कि let और कास्ट अधिक ब्राउज़रों द्वारा समर्थन प्राप्त करेंगे, क्या इससे IIFE पैटर्न जैसी किसी चीज की आवश्यकता कम हो जाती है?


हां, यह const और let और ES6 की सभी नई विशेषताओं का उपयोग करने के लिए बहुत ही अनुशंसित है। यह अभी के लिए सभी ब्राउज़रों द्वारा समर्थित नहीं हो सकता है, लेकिन आप अपने अनुप्रयोगों में बाबेल जैसे संकलक का उपयोग कर सकते हैं ताकि यह सुनिश्चित हो सके कि वे हर जगह काम करेंगे।





hoisting