यहां कुछ चीजें चल रही हैं।
(function() {
// Some code
})();
यह अपने स्वयं के दायरे में कुछ जावास्क्रिप्ट कोड निष्पादित करने के लिए एक तरीका प्रदान करता है: पहले immediately invoked function expression (Iife) पैटर्न है। आमतौर पर इसका उपयोग किया जाता है ताकि फ़ंक्शन के भीतर बनाए गए किसी भी चर वैश्विक स्तर को प्रभावित न करें। आप इसके बजाय इसका उपयोग कर सकते हैं:
function foo() {
// Some code
}
foo();
लेकिन इसके लिए फ़ंक्शन को नाम देने की आवश्यकता है, जो हमेशा आवश्यक नहीं है। किसी नामित फ़ंक्शन का उपयोग करने का अर्थ कुछ भविष्य बिंदु पर भी होता है, फ़ंक्शन को फिर से बुलाया जा सकता है जो वांछनीय नहीं हो सकता है। इस तरह से एक अज्ञात फ़ंक्शन का उपयोग करके आप सुनिश्चित करते हैं कि यह केवल एक बार निष्पादित हो।
इस सिंटैक्स अमान्य है:
function() {
// Some code
}();
क्योंकि आप यह अभिव्यक्ति के रूप में पार्स करने के लिए कोष्ठक में समारोह रैप करने के लिए किया है। और जानकारी यहां है: अपने स्वयं के दायरे के भीतर
(function() {
// Some code
})();
की अनुमति देता है 'कुछ कोड' तुरंत निष्पादित किया जाना है, जैसे कि यह सिर्फ इनलाइन लिखा गया था, लेकिन यह भी: http://benalman.com/news/2010/11/immediately-invoked-function-expression/
तो Iife तर्ज पर जल्दी से संक्षेप में ताकि ग्लोबल नेमस्पेस को प्रभावित न किया जा सके (और इस प्रकार अन्य स्क्रिप्ट्स द्वारा संभावित रूप से हस्तक्षेप या हस्तक्षेप किया जा सके)।
तुम बस के रूप में अपने कार्य करने के लिए तर्क पारित कर सकते हैं आप एक सामान्य कार्य, उदाहरण के लिए,
(function(x) {
// Some code
})(1);
तो हम समारोह के लिए पहला तर्क है, जो इसे प्राप्त करता है के रूप में मूल्य गुजर रहे हैं '1' एक स्थानीय रूप से स्कॉप्ड चर के रूप में, नाम एक्स।
delete x;
return x;
हटाने ऑपरेटर वस्तुओं से गुण निकाल देगा:
दूसरे, आप समारोह कोड के ही हिम्मत की है। यह चर हटा नहीं है। इसलिए;
इस में
var foo = {'bar':4, 'baz':5};
delete foo.bar;
console.log(foo);
परिणाम लॉग किया जा रहा:
{'baz':5}
जबकि,
var foo = 4;
delete foo;
console.log(foo);
मूल्य 4 प्रवेश करेंगे, क्योंकि foo एक चर नहीं एक संपत्ति है और इसलिए यह नहीं किया जा सकता नष्ट कर दिया।
कई लोग मानते हैं कि हटाना वैरिएबल को हटा सकता है, जिस तरह से ऑटोग्लोबल्स काम करते हैं। ,
bar = 4; // Note the lack of 'var'. Bad practice! Don't ever do this!
delete bar;
console.log(bar); // Error - bar is not defined.
इस बार हटाने का काम करता है, क्योंकि आप एक चर को हटाने नहीं कर रहे हैं, लेकिन: आप इसे पहले की घोषणा के बिना एक चर को असाइन करते हैं, यह वास्तव में एक चर, लेकिन वैश्विक वस्तु पर एक संपत्ति बन नहीं होगा वैश्विक वस्तु पर एक संपत्ति। वास्तव में, पिछले टुकड़ा इस के बराबर है:
window.bar = 4;
delete window.bar;
console.log(window.bar);
और अब आप देख सकते हैं कि यह foo वस्तु उदाहरण और नहीं foo चर उदाहरण के अनुरूप है।
यह एक आईआईएफई है, यहां विवरण: http://www.markupjavascript.com/2016/07/what-are-immediately-invoked-function.html –