javascript क्या कन्स्ट्रक्शन और आईआईएफई पैटर्न को अनावश्यक बना देगा?




scope ecmascript-6 (3)

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

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

अब और let देने के लिए ब्राउज़र को ब्राउजर्स द्वारा समर्थन मिलेगा, क्या यह आईआईएफई पैटर्न की तरह कुछ की आवश्यकता को कम करता है?


यद्यपि ब्राउज़र इसका समर्थन करना शुरू कर सकता है, हमेशा कुछ यादृच्छिक ब्राउज़र होगा जो पुरानी है या इसके लिए समर्थन की योजना नहीं बना रहा है। जब तक यह सभी प्रमुख ब्राउज़रों में मानक नहीं बन जाता है, तब तक यह अभी भी सिफारिश की जाती है कि आप अपने आईआईएफई पैटर्न के साथ आगे बढ़ते रहें, जब तक कि आप सभी बड़े उपयोग किए गए ब्राउज़रों पर नहीं पाते। आप कुछ कर सकते हैं, एक स्क्रिप्ट (या Google एनालिटिक्स) है कि यह अपरिभाषित है या नहीं, और जब तक आप इसे कम से कम 90% कहकर कहें कि यह अपरिभाषित नहीं है, आपको आईआईएफई


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

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

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






hoisting