दिलचस्प पोस्ट
Django के साथ AngularJS – विवादित टेम्पलेट टैग क्लोज़र में वैरिएबल कैप्चर की विस्तृत व्याख्या मैं एंड्रॉइड स्टूडियो में एक प्रोजेक्ट को कैसे निर्यात करूं? हमें यहां टाइप नाम की आवश्यकता क्यों है? नक्शा कार्यों की संख्या निर्धारित करना और कार्यों को कम करना Ctypes के साथ सी ++ क्लासेस का उपयोग कैसे करें? IOS 5.1 के साथ वरीयताओं / सेटिंग्स कैसे खोलें? पायथन फ़ाइल संचालन रीसाइक्लर पर एक अलग गतिविधि कैसे खोलें आइटम पर क्लिक करें इवेंट लूप संदर्भ में माइक्रोटस्क और मैक्रोटसास्क के बीच का अंतर एक अनुक्रमणिकाऑट अपरेंज एक्सपैशन / आर्गमेंटऑटऑफ़रेन्ज अपॉक्शन्स क्या है और मैं इसे कैसे ठीक कर सकता हूं? मैं एक WinForms ऐप कैसे पूर्ण स्क्रीन पर जा सकता हूं एएसपी.नेट में 404 को लागू करने का सर्वोत्तम तरीका कई मापदंडों के साथ Google oauth2 redirect_uri आने वाले सर्वलेट अनुरोध url को बदलने के लिए जावा में सर्वलेट फिल्टर का उपयोग कैसे करें?

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

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

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

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

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

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; } }; }(); 

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

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

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

  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 () { ... }); 

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

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