2013-02-22 5 views
7

मैं सिखाया गया है यह हमेशा जावा स्क्रिप्ट कोड की शुरुआत में एक अर्धविराम डालने के लिए एक अच्छा अभ्यास है कि, निम्नलिखित के रूप में:कोड की शुरुआत में जावास्क्रिप्ट अर्धविराम: अभी भी एक अच्छा अभ्यास है?

;(function(){ 

})(); 

हालांकि, कई लोकप्रिय JavaScript लाइब्रेरी/चौखटे इस, इस तरह के jQuery के रूप में उपयोग नहीं करते हैं , बैकबोन, आदि

मेरा मानना ​​है कि शुरुआत में अर्धविराम को खराब कोड को छोटा/संपीड़ित कोड तोड़ने के लिए रोकना चाहिए, लेकिन फिर भी, कोई भी इसका उपयोग क्यों नहीं कर रहा है?

क्या शुरुआत में अर्धविराम किसी कारण से बेकार हो गया है?

+5

* कोई भी अब यह नहीं कर रहा है *: उस दावे का समर्थन करने के लिए आपको किस तरह के साक्ष्य हैं? –

+2

यदि आप "अच्छी प्रैक्टिस" के बारे में बात करना चाहते हैं, तो मैं कहूंगा कि फ़ंक्शन वाले कंटेनस के अंदर आमंत्रण कोष्ठक को स्थानांतरित करें। –

+1

"फ़ंक्शन आमंत्रण से पहले सेमी-कोलन समेकित स्क्रिप्ट और/या अन्य प्लगइन के खिलाफ एक सुरक्षा नेट है जो ठीक से बंद नहीं हो सकता है।" (http://jqueryboilerplate.com/) यह केवल जरूरी है, यदि आप किसी ऐसे पृष्ठ पर स्क्रिप्ट करते हैं जहां अन्य तृतीय पक्ष स्क्रिप्ट भी लोड/निष्पादित की जाती हैं। – marekful

उत्तर

1

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

ऐसे कई स्वचालित उपकरण हैं जो ऐसा करते हैं। उदाहरण के लिए UglifyJS 2 पर एक नज़र डालें। मुझे यकीन है कि यदि आप चारों ओर देखते हैं तो आप ऐसे कई टूल ढूंढ पाएंगे।

प्रश्न पर वापस लौटना, तुरंत बाद में फोकस अभिव्यक्ति के बाद अर्धविराम डालना महत्वपूर्ण है क्योंकि डैफ़ ने बताया। हालांकि इससे पहले अर्धविराम लगाने का कोई कारण नहीं है। यदि आप एक अच्छे लड़के हैं और प्रत्येक कथन और अभिव्यक्ति के बाद अर्धविराम डालते हैं तो आपको कभी भी कोई समस्या नहीं होनी चाहिए।

जावास्क्रिप्ट को कभी भी आपके लिए स्वचालित अर्धविराम सम्मिलन न करने दें।

केवल जगह है जहाँ यह अनुमेय है के लिए नहीं रखा अर्धविराम एक समारोह घोषणा के बाद है:

function foo() {} // it's alright to not put a semicolon here 

आप एक समारोह अभिव्यक्ति का उपयोग कर रहे लेकिन अगर तो हमेशा अर्धविराम डाल दिया।

(function foo() {})(); // you should put a semicolon here 

कहीं भी अर्धविराम डालना सिर्फ भ्रमित है। विशेष रूप से एक लाइन की शुरुआत में। अन्य प्रोग्रामिंग पृष्ठभूमि के लोग यह भी सोच सकते हैं कि यह लाइन टिप्पणी के अंत की शुरुआत है।

+2

* "आप अपनी इच्छा के अनुसार अपना प्रोग्राम लिखने में सक्षम होना चाहिए .. [तब नियमों का एक गुच्छा जो आपको बताता है कि आपको अपना प्रोग्राम लिखने में सक्षम नहीं होना चाहिए] "* यह विरोधाभासी है। –

+3

* "जावास्क्रिप्ट को कभी भी आपके लिए स्वचालित अर्धविराम सम्मिलन न करने दें।" * [यह मूर्खतापूर्ण है।] (Http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leaders-regarding) * "एकमात्र जगह जहां अर्धविराम नहीं डालने की अनुमति है एक समारोह घोषणा के बाद है" * यह गलत है। * "कहीं भी अर्धविराम डालना सिर्फ उलझन में है।" * यह सिर्फ आपकी राय है। * "अन्य प्रोग्रामिंग पृष्ठभूमि के लोग यह भी सोच सकते हैं कि यह लाइन टिप्पणी के अंत की शुरुआत है।" * यह अप्रासंगिक है। –

8

फ़ाइल के अंत में अर्धविराम जोड़ना अधिक आम अभ्यास है। मुद्दा यह है, जब आप दो फ़ाइलों इस तरह जोड़: file1 के अंत में एक अर्धविराम डालने के बिना

// file1.js 
(function() { 
})() 

// file2.js 
(function() { 
})() 

, यह file2 में समारोह के साथ file1 में समारोह से वापसी मान को लागू करने की कोशिश करेंगे। प्रत्येक फ़ाइल के अंत में अर्धविराम डालने से यह हल हो जाएगा (जैसा कि उन्हें शुरुआत में रखा जाएगा)।

एक और तरीका है इस तरह के एक बयान में समारोह मंगलाचरण चालू करने के लिए है:

!function() { 
}(); 

मुझे लगता है कि यह भी JSLint द्वारा की सिफारिश की है क्योंकि इस मामले में आप अर्धविराम बारे में चिंता करने की जरूरत नहीं है (हालांकि आप उन्हें वैसे भी इस्तेमाल करना चाहिए, लेकिन यह पूरी तरह से एक अलग चर्चा है;)।

+0

क्या आपके पास '! Function() {}();' का उदाहरण उपयोग है? मैंने वास्तव में उस वाक्यविन्यास को पहले कभी नहीं देखा है! +1 –

+2

बेन आलमैन ने इस पर एक महान लेख लिखा: http://benalman.com/news/2010/11/immediately-invoked-function-expression/ – Daff

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