2012-02-06 13 views
6

को समझने में मदद की ज़रूरत है मुझे एक लाइन को छोड़कर सभी प्लगइन्स कोड मिलते हैं, और जिस तरह से सर्च इंजन काम करते हैं, मैं वास्तव में अपने प्रश्न की खोज नहीं कर सकता।ट्विटर बूटस्ट्रैप्स प्लगइन्स (jQuery)

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

(!function($) {/*....*/})(jQuery); 

यह क्यों कहता है कार्यों ($) ?? मैं $.noConflict() के समान प्रभाव के लिए अनुमान लगा रहा हूं, लेकिन ऐसा नहीं है कि हम केवल (function($) {/*...*/})(jQuery); का उपयोग क्यों करते हैं, यह हमारे फ़ंक्शन ब्लॉक पर डॉलर चिह्न को लपेटता है। मुझे पूरी तरह से पता है कि मैं यहां बेस से बाहर निकल सकता हूं, मैं अभी भी jQuery/जेएस में मध्यवर्ती हूं।

अगर कोई मुझे फ़ंक्शन स्टेटमेंट से पहले नोट ऑपरेटर के प्रभाव पर प्रबुद्ध कर सकता है, तो मैं इसकी सराहना करता हूं।

संपादित: ऐसा लगता है कि मैं (!function($) ...) नहीं होने पर बस !function($)... किया जा रहा है, लेकिन आप लोग मुझे यह समझने में मदद की बूटस्ट्रैप अनदेखी बस()

+0

मैंने इसे पहले कभी नहीं देखा है। –

+0

@LightnessRacesinOrbit हाँ इसे जांचें http://twitter.github.com/bootstrap/assets/js/bootstrap-tooltip.js – dhazelett

+0

"विस्मयादिबोधक चिह्न फ़ंक्शन परिभाषा जावास्क्रिप्ट" के लिए Google पर पहला परिणाम .... –

उत्तर

3

तो वहाँ एक जोड़े के लिए एक विकल्प है चीजें यहाँ जा रही हैं। सबकुछ एक अज्ञात फ़ंक्शन में लपेटा जा रहा है जिसे तुरंत निष्पादित किया जाता है। यह पुस्तकालय के लिए एक गुंजाइश बनाने के लिए है ताकि जब लेखक कार्य और चर घोषित करता है तो वे डिफ़ॉल्ट रूप से वैश्विक नहीं होते हैं।

अब तक मेरे साथ। ठीक है अगली बात पूरी ($){...}(jQuery) चीज है। यहां क्या हो रहा है लेखक लाइब्रेरी को $ नामक पैरामीटर के रूप में अज्ञात रैपर फ़ंक्शन में गुजर रहा है। तो अज्ञात फ़ंक्शन के दायरे में वह $ का उपयोग jQuery के संदर्भ में कर सकता है जैसा कि आप उम्मीद करेंगे। यह एक सर्वोत्तम प्रथाओं की बात है क्योंकि वैश्विक समय में 99% समय पहले jQuery को $ के रूप में परिभाषित किया गया है, लेकिन इसे फ़ंक्शन स्कोप के भीतर वैश्विक चरों को संदर्भित करने के लिए खराब रूप माना जाता है, और इस प्रकार वह इसे एक के रूप में पास करता है पैरामीटर।

अभी भी वहाँ? विस्मयादिबोधक चिह्न: जावास्क्रिप्ट में एक नियम है जो बताता है कि कार्यक्रम की पहली पंक्ति एक अभिव्यक्ति होनी चाहिए (यानी एक समारोह घोषणा उर्फ ​​स्टेटमेंट नहीं)। प्रीपेड करके! लेखक घोषणा को एक अभिव्यक्ति में बदल रहा है (जो झूठा लौटाता है)। इस मामले में हालांकि मुझे नहीं लगता! वास्तव में आवश्यक है क्योंकि घोषणा() में लपेटा गया है और तुरंत निष्पादित किया गया है। (एक फ़ंक्शन कॉल एक अभिव्यक्ति है)

+0

दरअसल, यह पहले से ही एक अभिव्यक्ति है; '!' अनावश्यक है। माता-पिता में घोषणा को लपेटने के लिए यह _al वैकल्पिक_ है, लेकिन लेखक ने किसी कारण से दोनों किया है। और जब आप किसी प्रोग्राम की पहली पंक्ति के बारे में बात करते हैं तो मैं नहीं जानता कि आप किस बात का जिक्र कर रहे हैं; वास्तव में जावास्क्रिप्ट स्क्रिप्ट का विशाल बहुमत मुझे यकीन है कि बयान के साथ शुरू होता है। –

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