[Javascript] जावास्क्रिप्ट में आप इस संरचना को कैसे समझा सकते हैं?


Answers

यह एक अनाम समारोह है जिसे बुलाया जा रहा है

उस का उद्देश्य एक नया अवसर पैदा करना है जिससे स्थानीय चर का उपयोग नहीं किया जा सकता है। उदाहरण के लिए:

var test = 1;
(function() {
  var test = 2;
})();
test == 1 // true

इस वाक्य रचना के बारे में एक महत्वपूर्ण नोट यह है कि आपको अर्ध-बृहदान्त्र के साथ वक्तव्य समाप्त करने की आदत में आना चाहिए, यदि आप पहले से ही नहीं करते हैं इसका कारण यह है कि जावास्क्रिप्ट फंक्शन नाम और उसके कोष्ठक के बीच पंक्ति फ़ीड की अनुमति देता है जब आप इसे कहते हैं

नीचे स्निपेट एक त्रुटि का कारण होगा:

var aVariable = 1
var myVariable = aVariable

(function() {/*...*/})()

यह वास्तव में क्या कर रहा है:

var aVariable = 1;
var myVariable = aVariable(function() {/*...*/})
myVariable();

एक नया ब्लॉक स्कोप बनाने का दूसरा तरीका निम्न सिंटैक्स का उपयोग करना है:

new function() {/*...*/}

अंतर यह है कि पूर्व तकनीक को प्रभावित नहीं होता है जहां कीवर्ड "यह" इंगित करता है, जबकि दूसरा करता है

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

Question
(function() 
 {
     //codehere
 }
)();

इस प्रकार की वाक्यविन्यास के बारे में विशेष क्या है? क्या करता है ()(); मतलब?




ब्रैकेट के पहले समूह में मौजूद सामान फ़ंक्शन के लिए मूल्यांकन करता है। ब्रैकेट का दूसरा सेट फिर इस फ़ंक्शन को निष्पादित करें। इसलिए यदि आपके पास कुछ ऐसा है जो स्वचालित रूप से ऑनलोड को चलाने के लिए चाहते हैं, तो आप इसे कैसे लोड और निष्पादित कर सकते हैं।




यह उपयोग मूल रूप से सी में एक आंतरिक ब्लॉक के समतुल्य है। यह ब्लॉक के अंदर परिभाषित चर को बाहर दिखाई देने से रोकता है। इसलिए निजी वस्तुओं के साथ कक्षाओं को बंद करने के लिए यह एक आसान तरीका है। बस यह मत भूलो return this; यदि आप इसे किसी ऑब्जेक्ट बनाने के लिए उपयोग करते हैं

var Myobject=(function(){
    var privatevalue=0;
    function privatefunction()
    {
    }
    this.publicvalue=1;
    this.publicfunction=function()
    {
        privatevalue=1; //no worries about the execution context
    }
return this;})(); //I tend to forget returning the instance
                  //if I don't write like this



Links