जावास्क्रिप्ट में, फ़ंक्शन घोषणाओं का प्रचलित भाषा मानक और जिस वातावरण में उन्हें निष्पादित किया जाता है, उसके आधार पर एक अलग व्यवहार होता है।
सख्त मोड में (ईएस5)
सख्त मोड में, ईसीएमएस्क्रिप्ट 5 में पेश किया गया (ES5), सशर्त बयानों के भीतर फ़ंक्शन घोषणाओं की अनुमति नहीं है। ऐसा इसलिए है क्योंकि फ़ंक्शन घोषणाएं फहराए गए वैरिएबल बनाती हैं, जो संपूर्ण फ़ंक्शन या वैश्विक दायरे तक सीमित होती हैं। उन्हें एक सशर्त बयान के भीतर रखने से यह उत्थापन तंत्र टूट जाएगा। सशर्त बयानों के भीतर अप्रत्याशित था। विभिन्न ब्राउज़रों और जावास्क्रिप्ट इंजनों ने इस स्थिति से निपटने के लिए अपने स्वयं के नियम लागू किए, जिससे असंगत परिणाम सामने आए।
आधुनिक जावास्क्रिप्ट (ES2015) में
2018 तक, अधिकांश आधुनिक ब्राउज़र ईसीएमएस्क्रिप्ट 2015 (ईएस2015) का समर्थन करें, जिसने ब्लॉक के भीतर फ़ंक्शन घोषणाओं की सख्त व्याख्या पेश की। ES2015 में, फ़ंक्शन घोषणाओं का दायरा उस ब्लॉक तक होता है जिसमें उन्हें घोषित किया जाता है।
उदाहरण:
निम्नलिखित कोड पर विचार करें:
वर एबीसी = ''; यदि (1 === 0) { फ़ंक्शन ए() { एबीसी = 7; } } अन्यथा यदि ('ए' === 'ए') { फ़ंक्शन ए() { एबीसी = 19; } } अन्यथा यदि ('फू' === 'बार') { फ़ंक्शन ए() { एबीसी = 'फू'; } } ए(); दस्तावेज़.लिखें(एबीसी); //'foo' होने पर भी 'foo' लिखता है! हालाँकि, गैर-सख्त मोड में, यह कार्यान्वयन के आधार पर अलग-अलग आउटपुट उत्पन्न कर सकता है। दिए गए उदाहरण में, क्रोम "foo" आउटपुट देता है जबकि फ़ायरफ़ॉक्स "19" आउटपुट देता है। फ़ंक्शन को सशर्त रूप से परिभाषित करते समय फ़ंक्शन घोषणाओं की। फ़ंक्शन एक्सप्रेशन स्कोप्ड फ़ंक्शन बनाते हैं जो केवल उनके तत्काल दायरे में ही पहुंच योग्य होते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3