मैं section 13 या ईसीएमएस्क्रिप्ट विनिर्देश (v। 5) देख रहा हूं।अज्ञात फ़ंक्शन एक्सप्रेशन और नामित फ़ंक्शन एक्सप्रेशन क्यों अलग-अलग शुरू किए गए हैं?
वापसी FormalParameterListopt और शरीर FunctionBody द्वारा निर्दिष्ट द्वारा निर्दिष्ट मापदंडों के साथ 13.2 में निर्दिष्ट के रूप में एक नया फंक्शन वस्तु बनाने का परिणाम: एक अनाम समारोह अभिव्यक्ति के रूप में निम्नानुसार आरंभ नहीं हो जाता। स्कोप के रूप में चल रहे निष्पादन संदर्भ के लेक्सिकल एंटरटेनमेंट में पास करें। सख्त ध्वज के रूप में सत्य में गुजरें यदि फंक्शनएक्सप्रेस सख्त कोड में निहित है या यदि इसका फ़ंक्शनबॉडी सख्त कोड है।
इस तर्क बहुत कैसे एक समारोह घोषणा आरंभ नहीं हो जाता के समान है। हालांकि, ध्यान दें कि नामित funciton अभिव्यक्ति का कितना प्रारंभिकरण है।
- Let चल निष्पादन संदर्भ का शाब्दिक पर्यावरण तर्क के रूप में पारित करने NewDeclarativeEnvironment बुला का नतीजा हो funcEnv
- envRec funcEnv के परिवेश रिकॉर्ड बनें।
- पहचानकर्ता के स्ट्रिंग मान को तर्क के रूप में envRec के CreateImmutable बाइंडिंग कंक्रीट विधि को कॉल करें।
- क्लोजर पैरामीटर द्वारा निर्दिष्ट पैरामीटर के साथ फॉर्मल पैरामीटर लिस्टॉप और शरीर द्वारा निर्दिष्ट पैरामीटर के साथ 13.2 में निर्दिष्ट एक नया फ़ंक्शन ऑब्जेक्ट बनाने का नतीजा बंद करें। स्कोप के रूप में funcEnv में पास करें। सख्त ध्वज के रूप में सत्य में अगर फंक्शनएक्सप्रेस सख्त कोड में निहित है या यदि उसका फ़ंक्शनबॉडी सख्त कोड है।
- पहचानकर्ता के स्ट्रिंग मान को पास करने और तर्क के रूप में बंद करने के लिए envRec की प्रारंभिक Immutable बाइंडिंग ठोस विधि को कॉल करें।
- वापसी बंद करें।
मैं नामित/गुमनाम समारोह भाव के बीच बड़ा अंतर यह है है कि नामित समारोह भाव समारोह के भीतर से रिकर्सिवली कहा जा सकता है पता है, लेकिन है कि सभी मैं के बारे में सोच सकते हैं। सेटअप इतना अलग क्यों है और इसे अतिरिक्त चरणों को करने की आवश्यकता क्यों है?
अन्य सूक्ष्मताएं हैं। फ़ंक्शन अभिव्यक्ति नाम बाध्यकारी केवल पढ़ने के लिए है, लेकिन आपको फ़ंक्शन अभिव्यक्ति के शरीर के भीतर एक ही नाम का उपयोग करके एक var या फ़ंक्शन घोषित करने की अनुमति है। इस अर्थशास्त्र का वर्णन (याद रखें यह केवल एक विशिष्ट है।) एक अतिरिक्त पर्यावरण रिकॉर्ड के उपयोग की आवश्यकता है। –
दिलचस्प। लेकिन इसके लिए अतिरिक्त पर्यावरण रिकॉर्ड की आवश्यकता क्यों है? यदि, उदाहरण के लिए, चरण 5 से पहले फ़ंक्शन घोषणा (10.5) के दौरान एनएफई के पहचानकर्ता बाध्यकारी को बनाया जाना था, तो स्रोत के भीतर कोई भी var/function घोषणाएं इसे छायांकन के बजाय एनएफई के बाध्यकारी (5 एफ) को ओवरराइड कर देगी। व्यावहारिक रूप से एक ही प्रभाव, नहीं? – kangax