दिलचस्प पोस्ट
स्ट्रिंग को शीर्षक केस में परिवर्तित करना गतिशील कुंजी में पास करना: किसी वस्तु को वास्तविक युग्म जोड़ना? Log4j xml कॉन्फ़िगरेशन में सिस्टम पर्यावरण चर का उपयोग करना सी में एक सरणी का अधिकतम आकार एंड्रॉइड में वापस बटन अक्षम करें JQuery में तत्वों की श्रेणी का चयन कैसे करें थ्रेड कैसे पायथन में काम करते हैं, और आम पायथन-थ्रेडिंग विशिष्ट नुकसान क्या हैं? क्या पॉइंटर तर्क गुजर रहा है, सी ++ में मान से गुजरता है? गतिशील रूप से एक JComboBox में आइटम जोड़ने PHP कार्यों के लिए बिग-ओ की सूची सामान्यीकृत यूनिकोड मैं जावा जार फ़ाइल से एक संसाधन फ़ाइल कैसे पढ़ूं? जावा एपीआई जेडीके संस्करण को जानने के लिए एक क्लास फ़ाइल संकलित की गई है? मैं कमांड लाइन तर्क कैसे पारित करूं? जावा से रनटाइम पर एक वातावरण चर सेट करना संभव है?

जावास्क्रिप्ट में मॉड्यूल के दो घोषणाओं के बीच अंतर क्या है?

जावास्क्रिप्ट में एक मॉड्यूल के दो घोषणाओं के बीच क्या भिन्न है? किसी के फ़्रेशन के आसपास कोष्ठक है और दूसरा नहीं है?

एक लेख कहता है कि

अनाम समारोह के आसपास () सूचना। यह भाषा के लिए आवश्यक है, चूंकि टोकन फ़ंक्शन से शुरू होने वाले बयानों को हमेशा फ़ंक्शन डिलीवरेशन माना जाता है। इसमें () इसके बजाय एक फ़ंक्शन अभिव्यक्ति बनाता है।

दोनों एक ही बात करते हैं जब जांच की जाती है।

var person = (function () { // Private var name = "Robert"; return { getName: function() { return name; }, setName: function(newName) { name = newName; } }; }()); 

 var person = function () { // Private var name = "Robert"; return { getName: function() { return name; }, setName: function(newName) { name = newName; } }; }(); 

Solutions Collecting From Web of "जावास्क्रिप्ट में मॉड्यूल के दो घोषणाओं के बीच अंतर क्या है?"

कार्य जावास्क्रिप्ट में दो प्रकार के होते हैं – घोषणाएं और भाव

यह दोनों के बीच का अंतर है:

  1. फंक्शन घोषणाएँ फहराया है। इसका अर्थ है कि आप प्रोग्राम में प्रकट होने से पहले फ़ंक्शन को कॉल कर सकते हैं क्योंकि जावास्क्रिप्ट में घोषणाओं को फहराया जाता है
  2. समारोह भाव तुरंत लागू किया जा सकता है। फ़ंक्शन घोषणा नहीं कर सकती इसका कारण यह है कि भाव व्यक्त (या मान वापस) फ़ंक्शन अभिव्यक्ति फ़ंक्शन व्यक्त करते हैं।

फ़ंक्शन घोषणा का एक उदाहरण:

 foo("bar"); function foo(bar) { alert("foo" + bar); } 

उपरोक्त कार्यक्रम काम करेगा क्योंकि foo एक फ़ंक्शन घोषणा है।

 foo("bar"); // throws an error, foo is undefined - not a function var foo = function (bar) { alert("foo" + bar); }; 

उपरोक्त कार्यक्रम के रूप में काम नहीं करेगा क्योंकि foo को undefined , फहराया और बाद में एक समारोह की अभिव्यक्ति के मूल्य के रूप में घोषित किया गया है। इसलिए इसे undefined किया जाता है जब इसे कहा जाता है।

फ़ंक्शन अभिव्यक्ति का एक उदाहरण:

 (function (bar) { alert("foo" + bar); }("bar")); 

उपरोक्त समारोह तुरंत लागू किया जाएगा क्योंकि यह फ़ंक्शन अभिव्यक्ति है।

 function (bar) { alert("foo" + bar); }("bar"); // throws an error, can't call undefined 

उपरोक्त कार्य तुरंत लागू नहीं किया जाएगा क्योंकि यह फ़ंक्शन घोषणा है। याद रखें, घोषणाएं अभिव्यक्त नहीं करती हैं (या मान वापस) तो यह एक फ़ंक्शन के रूप में undefined करने का प्रयास करने की तरह है।

फ़ंक्शन एक अभिव्यक्ति कैसे बनता है?

यदि किसी फ़ंक्शन का उपयोग उस संदर्भ में किया जाता है जहां अभिव्यक्ति की अपेक्षा की जाती है, तो उसे अभिव्यक्ति के रूप में माना जाता है अन्यथा यह एक घोषणा के रूप में माना जाता है।

अभिव्यक्ति की अपेक्षा की जाती है जब:

  1. आप एक वैरिएबल के लिए एक मान निर्दिष्ट कर रहे हैं (यानी identifier = expression )।
  2. कोष्ठकों के अंदर (यानी ( expression ) )।
  3. ऑपरेटर के ऑपरेंटर (यानी operator expression ) के रूप में

इसलिए निम्नलिखित सभी कार्य अभिव्यक्तियाँ हैं:

 var foo = function () {}; (function () {}); ~function () {}; 

बाकी सब कुछ एक समारोह घोषणा है संक्षेप में यदि आपका कार्य कुछ भी नहीं है, तो यह एक घोषणा है

यह कोड देखें: https://github.com/aaditmshah/codemirror-repl/blob/master/scripts/index.js#L94

निम्नलिखित फ़ंक्शन है isExpression का उपयोग यह परीक्षण करने के लिए किया जाता है कि कुछ मनमाने ढंग से जावास्क्रिप्ट कोड एक अभिव्यक्ति है या नहीं:

 function isExpression(code) { if (/^\s*function\s/.test(code)) return false; try { Function("return " + code); return true; } catch (error) { return false; } } 

आशा है कि यह आपके मन में किसी भी संदेह को साफ करता है।

संक्षेप में:

  1. फ़ंक्शन अभिव्यक्ति अभिव्यक्ति या मान देता है (इस मामले में एक फ़ंक्शन)। इसलिए इसे तत्काल लागू किया जा सकता है, लेकिन यह प्रोग्राम में प्रकट होने से पहले इसे नहीं बुलाया जा सकता।
  2. एक फ़ंक्शन घोषणा फहराया है । इसलिए इसे प्रोग्राम में प्रकट होने से पहले इसे कहा जा सकता है। हालांकि, यह किसी भी मूल्य को व्यक्त नहीं करता है, इसे तुरंत लागू नहीं किया जा सकता है।

वर्तमान संदर्भ में दुभाषिए के लिए कोई अंतर नहीं है आमतौर पर लेखन मॉड्यूल का बेहतर तरीका कोष्ठक के साथ फ़ंक्शन लपेट करना है:

 var person = (function () { // Private var name = "Robert"; return { getName : function () { return name; } }; }()); 

इसका कारण यह है कि सिंटैक्स क्लीनर है और यह स्पष्ट रूप से यह घोषित किए जाने के तुरंत बाद फ़ंक्शन को खोलना चाहते हैं। एक और कारण यह है कि:

 (function () { //some stuff }()); 

काम करेगा परन्तु

 function () { //some stuff }(); 

यह अभ्यस्त है

फ़ंक्शन को हर बार जब आप सामान्य कोडिंग शैली का उपयोग करते हैं, जो आमतौर पर एक अच्छी बात है :-)।

अंतर यह है कि जब लेखन:

 var foo = (function () { ... }()); 

(अनावश्यक लेकिन उपयोगी) समूहिंग () यह एक सामान्य कोडन शैली है, जिसे पहले पंक्ति की तरह स्पष्ट किया जाता है कि दाएं हाथ की ओर एक त्वरित रूप से लागू समारोह अभिव्यक्ति (आईआईएफई) है। हालांकि, दूसरे में:

 var foo = function () { ... }(); 

यह स्पष्ट नहीं हो जाता है जब तक कि आप अंतिम पंक्ति को पढ़ते नहीं हैं, जो शायद बहुत कुछ पंक्तियां हो। जब तक आप पिछली रेखा तक नहीं पहुंच पाते, तो आप शायद सोचा था कि आप सादा काम पढ़ रहे थे:

 var foo = function () { ... }; 

ध्यान दें कि कोष्ठक का उपयोग सादे काम में भी किया जा सकता है:

 var foo = (function () { ... }); 

लेकिन उस स्थिति में वे सचमुच (और संभवत: आईआईएफई के लिए उनका उपयोग करने के सम्बन्ध के कारण भ्रामक) हैं।

माता-पिता की एक महत्वपूर्ण जोड़ी देखें