2011-03-01 19 views
8

संभावित डुप्लिकेट नाम:
How does this JavaScript/JQuery Syntax work: (function(window, undefined) { })(window)?
What advantages does using (function(window, document, undefined) { … })(window, document) confer?चर जावास्क्रिप्ट पुस्तकालय में अपरिभाषित

मैंने देखा है कई जावास्क्रिप्ट लाइब्रेरियों "अपरिभाषित" नाम की एक चर, iam यह पता लगाने में असमर्थ बनाने के अपने उद्देश्य, नीचे jQuery लाइब्रेरी

* Date: Wed Feb 23 13:55:29 2011 -0500 
*/ 
(function(window, undefined) { 

// Use the correct document accordingly with window argument (sandbox) 
var document = window.document; 
var jQuery = (function() { 
से कॉपी की गई रेखाएं हैं

कृपया मुझे ऐसा करने का कारण और लाभ बताएं !!

उत्तर

7

आप क्या देखेंगे कुछ इस तरह है:

(function(undefined) { 
    /* lots of code */ 
}()); 

ऐसा अनाम समारोह बनाता है और उसे तुरंत निष्पादित करता है। फ़ंक्शन में पैरामीटर है जिसे undefined कहा जाता है। चूंकि फ़ंक्शन में कोई तर्क पारित नहीं हुआ है, इसलिए परिवर्तनीय undefined वास्तव में जावास्क्रिप्ट primitive value undefined है।

तो आप ऐसा क्यों करना चाहते हैं? ठीक है, समस्या यह है कि आप वास्तव में उदाहरण के नाम undefined साथ एक चर बना सकते हैं और आप की तरह कुछ भी करने के लिए यह निर्धारित करते हैं, .:

var undefined = 'some text'; 

एक परीक्षण myvalue === undefined अपने कोड के भीतर तो अप्रत्याशित परिणाम होता है।

undefined नामक पैरामीटर के साथ अनाम कार्य अनिवार्य रूप से undefined के मूल्य को मूल मूल्य पर "रीसेट" करता है, ताकि आप इसके बारे में चिंता किए बिना इसकी जांच कर सकें कि क्या इसका सही मूल्य है या नहीं।

6

यह सुनिश्चित करने के लिए कि undefined वास्तव में undefined है। Paul Irish calls it the asshole effect, पृष्ठ पर शामिल अन्य जेएस अपरिभाषित अर्थ बदल सकते हैं, और फिर आपको अप्रत्याशित परिणाम मिलेंगे।

+1

मुझे इसे कभी समझ में नहीं आया। मैं 'jQuery = {}' की तरह मूर्खतापूर्ण कुछ भी कर सकता था, और फिर jQuery काम करना बंद कर देगा - आश्चर्य की बात नहीं। यदि आप अपने आप को 'अपरिभाषित = सत्य' डालकर पैर में शूट करना चाहते हैं, तो आपको क्यों रोकें? – Andrea

+1

वैसे कोई और आपके पैर में शूटिंग करने की कोशिश कर सकता है, जैसे कि आपके सहित एक यादृच्छिक प्लगइन। – Loktar

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