जावास्क्रिप्ट फ़ंक्शन में, क्या आपको नेस्टेड फ़ंक्शन को फ़ंक्शन एक्सप्रेशन के रूप में परिभाषित करने की आवश्यकता होती है या फ़ंक्शन बॉडी में फ़ंक्शन घोषणाएं होती हैं? उदाहरण के लिए, क्या ऐसा कुछ अनुपालन करेगा?नेस्टेड फ़ंक्शंस जावास्क्रिप्ट
function a() {
function b() {
function c() {
window.alert(3);
}
window.alert(2);
}
window.alert(1);
}
या आपको ऐसा कुछ करना होगा?
function a() {
var a = function() {
var c = function() {
window.alert(3);
}
window.alert(2);
}
window.alert(1);
}
ECMA-262 का कहना है कि:
ECMAScript के कई व्यापक रूप से इस्तेमाल कार्यान्वयन एक वक्तव्य के रूप में FunctionDeclaration के उपयोग का समर्थन करने के लिए जाना जाता है। हालांकि इस तरह के फंक्शनक्लेक्शंस पर लागू अर्थशास्त्र में कार्यान्वयन के बीच महत्वपूर्ण और असहनीय भिन्नताएं हैं। इन असहनीय मतभेदों के कारण, एक समारोह के रूप में फ़ंक्शनक्लेक्शन का उपयोग कोड में परिणाम होता है जो कार्यान्वयन के बीच विश्वसनीय रूप से पोर्टेबल नहीं होता है। यह अनुशंसा की जाती है कि ईसीएमएस्क्रिप्ट कार्यान्वयन या तो फंक्शन डिसक्लेरेशन के इस उपयोग को अस्वीकार करता है या इस तरह के उपयोग का सामना करते समय चेतावनी जारी करता है। ईसीएमएस्क्रिप्ट का भविष्य संस्करण एक स्टेटमेंट संदर्भ में कार्यों की घोषणा के लिए वैकल्पिक पोर्टेबल माध्यम परिभाषित कर सकता है।
क्या इसका मतलब यह है कि फ़ंक्शन बॉडी में फ़ंक्शन घोषणा तकनीकी रूप से गलत है, या क्या मुझे यह पूरी तरह गलत है? मैंने सुना है कि लोग शरीर को ब्लॉक के रूप में संदर्भित करते हैं, जो मानक के अनुसार, एक या अधिक बयान है, लेकिन मुझे यकीन नहीं है।
मुझे यकीन नहीं है कि मानक क्या है, थोड़ा उलझन में लग रहा है, लेकिन ईमानदारी से मुझे आईई 8 + और अन्य सभी ब्राउज़रों में फ़ंक्शन घोषणाओं को घोंसले में कभी समस्या नहीं हुई है। – elclanrs