दिलचस्प पोस्ट
'<' ऑपरेटर भविष्य के उपयोग के लिए आरक्षित है (पावरशेल) जब एक निर्भरता विवाद होता है तो एक मेवेन बिल्ड को कैसे तोड़ सकता है? क्या यह एक स्थैतिक java.sql.Connection उदाहरण को एक multithreaded सिस्टम में उपयोग करने के लिए सुरक्षित है? MVVM लाइट टूलकिट का उपयोग करके नई विंडो कैसे खोलें PyLint, PyChecker या PyFlakes? क्लाइंट रूटिंग (रिएक्शन-राउटर का उपयोग करके) और सर्वर साइड रूटिंग छवि गतिविधि को एक गतिविधि से दूसरी गतिविधि तक कैसे निकालना है? हस्ताक्षरित / अहस्ताक्षरित चार में अंतर एक पीडीएफ फाइल से सामग्री की एक तालिका बनाएँ एएसपी.एन.टी. साइट लोड संतुलित सर्वर पर लोड हो रहा है, कभी-कभी फ्रीजिंग और / या पृष्ठ के शीर्ष पर अजीब पाठ दिखाती है पायथन में विखंडू (एन) के द्वारा एक इटरेटर को दोहराएं? नोड-अनुरोध – त्रुटि "SSL23_GET_SERVER_HELLO: अज्ञात प्रोटोकॉल" फ़्लोटिंग पॉइंट संख्या गलत क्यों हैं? PHP कमांड सिंक त्रुटि से बाहर कैसे कमांड लाइन से Windows EventLog स्रोत बनाने के लिए?

आत्म-इनकॉल्विंग समारोह से पहले सेमीकोलन?

जावास्क्रिप्ट में आत्म-इनकॉल्विंग समारोह से पहले अर्धविराम का उपयोग करने का क्या लाभ है? मैंने कुछ लोकप्रिय jQuery प्लगिन में इस दृष्टिकोण को देखा और मुझे यह पता लगाना है कि यह जावास्क्रिप्ट में अगली भयानक चीज है जो मुझे नहीं पता है। अग्रिम धन्यवाद, दोस्तों!

Solutions Collecting From Web of "आत्म-इनकॉल्विंग समारोह से पहले सेमीकोलन?"

अगर आप दो फाइलों को स्वयं-इनव्यूकिंग फ़ंक्शंस के साथ जोड़ते हैं जो इस तरह दिखते हैं:

फ़ाइल ए:

 (function(){...A...})() 

फ़ाइल बी:

 (function(){...B...})() 

फ़ाइल ए + बी:

 (function(){...A...})()(function(){...B...})() 

आपके बिना विभाजक के दो कथन हैं। ऐसा तब होता है जब आप बिल्ली को एक साथ फाइल करते हैं और फिर उन्हें कम करते हैं

अब फाइल बी के लेखक सामने एक सेमीकोलन डालते हैं:

फ़ाइल B2:

 ;(function(){...B2...})() 

और आपको एक कार्यशील स्क्रिप्ट मिलेगी:

 (function(){...A...})();(function(){...B2...})() 

आत्म-इनकॉल्विंग फ़ंक्शंस कोष्ठक से घिरे हुए हैं, और जावास्क्रिप्ट कोष्ठक में इसका अर्थ ओवरलोड किया गया है

  1. पूर्ववर्ती ओवरराइड करने के लिए अभिव्यक्तियों को समूहीकृत करना: (x + y) * z
  2. फ़ंक्शन अनुप्रयोग: f()

समारोह से पहले एक अर्धविराम लगाकर फ़ंक्शन, फ़ंक्शन एप्लिकेशन से भ्रमित हो जाने पर फ़ंक्शन से किसी भी तर्क से बनने से रोकता है।

विचार करें

 var x = 42 (function () { ... })() 

के समान है

 var x = 42(function () { ... })() 

परंतु

 var x = 42 ; (function () { ... })() 

के समान है

 var x = 42; (function () { ... })() 

मैं एक अर्धविराम मुक्त शैली में सभी जावास्क्रिप्ट लिखता हूं । प्रत्येक पंक्ति के अंत में अर्धविराम के बिना लिखते समय, स्वचालित अर्धविराम सम्मिलन (एएसआई) के कारण, कुछ विशेष मामले हैं जो पहले "भ्रमित" हो सकते हैं:

  1. एक ऑपरेटर के साथ एक शीर्ष-स्तरीय अभिव्यक्ति शुरू करना , इस मामले में ( (खुले कोष्ठक), जो कि अधिकांश अन्य ऑपरेटर पसंद करते हैं , पिछली अभिव्यक्ति को जारी रख सकते हैं और इस प्रकार "अर्धविराम की स्वचालित प्रविष्टि" को दबा देते हैं। (यह आमतौर पर केवल तब होता है जब उपयोग करते हुए एक स्वयं का आह्वान समारोह।)

  2. बस # 2 के बारे में मजाक कर रहे हैं: एक भी नहीं है! (केवल एक नियम जानें और आप भी अतिरिक्त अर्धविराम बिना जीवन का आनंद ले सकते हैं 😉

चूंकि मैं एक अर्धविराम-मुक्त शैली में लिखता हूं इसलिए मैं इसे हमेशा इसे लिखता हूं (जहां समारोह-अभिव्यक्ति स्वाभाविक रूप से कई लाइनों को फैला सकती है):

 ;(FunctionExpression)() 

मेरे मामले में यह "सुरक्षा" या "एक त्रुटि पकड़ने" (ईमानदारी से, यदि आपकी शैली सेमी-बृहदान्त्र का उपयोग करना है और आप अर्ध-बृहदान्त्र का प्रयोग करना है) की कोशिश नहीं कर रहे हैं, तो आप पहले से ही इस त्रुटि को कहीं और बना सकते हैं एक ; "सुरक्षा" के लिए शुरुआत में हैवैश) नहीं; मेरे मामले में यह मेरी चुने हुए शैली के ज्ञान के साथ निरंतरता के लिए किया जाता है और "जानने" है कि ऑपरेटर के साथ एक पंक्ति शुरू करने से पिछली पंक्ति से अभिव्यक्ति जारी हो सकती है

विवरण देखें : विवरण के लिए अर्द्धविराम सम्मिलन (सब कुछ जिसे आपको पता होना चाहिए) (यह इस विषय पर मैंने देखा है सबसे अच्छा लेख है)।

हैप्पी कोडिंग

मेरे लिए, अर्ध कोलन इंटरनेट एक्सप्लोरर 8 (या कम से कम IETester ने कहा है) में एक त्रुटि पैदा कर रहा था, और यूआई टैब्स को ठीक से काम करने से रोक रहा था।

त्रुटि संदेश Invalid character in jquery.all.ui.js Line: 1. Char: 1 था Invalid character in jquery.all.ui.js Line: 1. Char: 1

मैं अर्ध-बृहदान्त्र पर पूरी तरह से मौके से ठोकर खाई। जब मैंने इसे हटा दिया ; ;(function($) यह प्रतीत होता है कि बिना साइड इफेक्ट या कार्यक्षमता का नुकसान.मैं Drupal का उपयोग कर रहा हूँ, पता नहीं है कि इस मामले के साथ कुछ भी नहीं है या नहीं।