2013-02-22 18 views
5

मैं उन वेब पृष्ठों को

(function(window, document, undefined){... 

या

साथ खोलने में एम्बेडेड कुछ jQuery स्क्रिप्ट देखा है
;(function ($, window, document, undefined) {... 

मेरा मानना ​​है कि ; हो सकता है अगर स्क्रिप्ट अन्य फ़ाइलों के साथ concatenated है और वहाँ एक लापता बंद कोष्ठक है, ; कोड के पहले लाइनों को हटाने से minifier बंद हो जाता है, लेकिन मुझे यकीन है कि नहीं हूँ।

मेरे द्वारा पोस्ट किए गए दो प्रकारों के साथ क्या है? लोग इस तरह अपना कोड क्यों खोलते हैं, पहला उदाहरण डॉलर का संकेत क्यों खो रहा है?

+4

शायद पहले मामले में, 'jQuery' को फ़ंक्शन के लिए तर्क के रूप में पारित नहीं किया गया है। जो भी कोड लिखा है, वह पूरी तरह से है। अर्धविराम के लिए: http://stackoverflow.com/questions/1031718/what-is-the-consequence-of-this-bit-of-javascript। –

उत्तर

5

वे एक स्क्रिप्ट के लिए वातावरण बनाने के लिए रैपर हैं जो यथासंभव अनुमानित है।

स्क्रिप्ट आप समारोह अभिव्यक्ति के लिए बंद करने ब्रैकेट देखेंगे, और समारोह मापदंडों समारोह हस्ताक्षर में परिभाषित के लिए मूल्यों में भेजता है के लिए तत्काल कॉल के अंत में:

(function($, window, document, undefined){ 
... 
})(jQuery, window, document); 

आप तो jQuery का उपयोग करें जिसमें आप $ पैरामीटर शामिल करेंगे, अन्यथा नहीं। (या यदि आपने इसे शामिल करने के बारे में नहीं सोचा था।)

जैसा कि आप देखते हैं, undefined नामक पैरामीटर के लिए कोई मान नहीं है। जब आप पैरामीटर के लिए मान पास नहीं करते हैं, तो इसे undefined मान पर सेट किया जाएगा, इसलिए फ़ंक्शन ब्लॉक के अंदर undefined नामक पैरामीटर का मान undefined होगा। इसका उद्देश्य इसलिए है क्योंकि वैश्विक पहचानकर्ता undefined जावास्क्रिप्ट के हाल के संस्करणों तक स्थिर नहीं था, इसलिए पुराने ब्राउज़र में आप संपत्ति undefined एक मान दे सकते हैं ताकि यह undefined का प्रतिनिधित्व न करे। (ध्यान दें कि परिभाषित एक मूल्य के बिना पैरामीटर वास्तविक मूल्य undefined, नहीं वैश्विक संपत्ति undefined के वर्तमान मूल्य मिल जाएगा।)

आप संदिग्ध के रूप में, शुरुआत में अतिरिक्त अर्धविराम अन्य लिपियों से स्क्रिप्ट की रक्षा के लिए है कि इसे विलय किया जा सकता है।

संबंधित मुद्दे