$
चरों में उपयोग करने में कुछ भी गलत नहीं है । मैं इसे हर चर पर उद्देश्य से नहीं करूंगा, लेकिन यह अभी भी एक वैध वाक्यविन्यास है। jQuery एक उदाहरण है जहां $
एक चर नाम के रूप में उपयोग किया जाता है। यही कारण है कि "क्रोम देव उपकरण हमेशा नहीं देखते हैं कि यह एक जावास्क्रिप्ट त्रुटि है" , क्योंकि पहली बार में कोई त्रुटि नहीं है।
यदि आप कोड लिखने से डरते हैं जैसे:
var demo = function demo() {
var a = 123;
...
$a = 456; // A new variable is created in global scope.
}
फिर आपको एक स्टाइल चेकर का उपयोग करना होगा, जैसे jsLint , jsHint या Google क्लोजर लाइनर । उनमें से कौन सा? चुनाव करना आपके ऊपर है। आपकी मदद करने के लिए, यहां कुछ नोट दिए गए हैं:
अंदाज
Google क्लोजर लाइनर Google जावास्क्रिप्ट स्टाइल गाइड का अनुसरण करता है , जिसे चतुराई से करने के लिए जाना जाता है। जावास्क्रिप्ट या छह भाषाओं में से किसी एक के लिए एक प्रसिद्ध शैली का उपयोग करना एक अच्छा विचार है: जब आप अपना कोड साझा करते हैं या एक नए डेवलपर को नियुक्त करते हैं, तो संभावना है कि वे पहले से ही इस शैली से परिचित हैं।
कई डेवलपर्स डगलस क्रॉकफोर्ड शैली से भी परिचित हैं। इस शैली को जावास्क्रिप्ट में विस्तार से समझाया गया है : द गुड पार्ट्स , एक पुस्तक जो कि जावास्क्रिप्ट के साथ काम करने वाले किसी भी व्यक्ति द्वारा खरीदी जा सकती है।
JsHint के लिए, मैं वास्तव में यह नहीं जान सकता कि सम्मेलनों का क्या उपयोग किया जाता है, और वेबसाइट स्वयं उस विषय पर बात करने से बचती है। शायद मुझे कुछ याद आ गया।
आईडीई द्वारा सहायता
JsLint और jsHint दोनों PhpStorm द्वारा समर्थित हैं । यही स्थिति Google क्लोजर लाइनर की भी है।
वातावरण
Google क्लोजर लिंटर उपकरण की एक श्रृंखला है । यदि आप पहले से ही Google क्लोजर कंपाइलर या Google क्लोजर लाइब्रेरी का उपयोग कर रहे हैं , तो अन्य उपकरणों के ऊपर क्लोजर लाइनर को चुना जाना बेहतर होगा।
सख़्ती
jsLint को सख्त माना जाता है। jsHint अधिक अनुमेय है, जो हमेशा अच्छी बात नहीं है। उदाहरण के लिए, jsHint के लिए jsLint को फोर्क करने के कारणों में से एक लेख में समझाया गया है जो बुरा कोड दिखाता है जो jsLint में त्रुटि उत्पन्न करेगा, लेकिन jsHint में नहीं:
/*global jQuery */
// Example taken from jQuery 1.4.2 source
jQuery.extend({
/* ... */
isEmptyObject: function( obj ) {
for ( var name in obj ) {
return false;
}
return true;
}
/* ... */
});
कोड खराब है, क्योंकि ऐसा लगता है कि जावास्क्रिप्ट में ब्लॉक गुंजाइश है, जबकि ऐसा नहीं है। जावास्क्रिप्ट देखें: द गुड पार्ट्स, पी। 102, परिशिष्ट A: भयंकर भाग, स्कोप। दूसरे शब्दों में, भाषा को जाने बिना कोड को देखते हुए, हम उम्मीद करते हैं कि हम name
लूप के बाहर दिखाई नहीं देंगे, जबकि यह दृश्यमान रहेगा।
Google क्लोजर लिंटर के रूप में, मेरा मानना है कि यह jsLint और jsHint के बीच में कहीं है, लेकिन मुझे इस बात का समर्थन करने के लिए पर्याप्त जानकारी नहीं है।
निष्कर्ष
मैं jsHint से बचूंगा: यह बहुत अधिक अनुमति है, जिसका अर्थ है कि यह संभावित बग नहीं पाएगा जो अन्य लिंटर का पता लगाएगा। शैली गाइड जिसका उपयोग किया जाता है, उसे ढूंढना मुश्किल है।
JsLint और Google बंद लाइनर के बीच, चुनाव स्पष्ट नहीं है। दोनों विशेषज्ञों द्वारा लिखे गए हैं, दोनों सख्त, अच्छी तरह से वर्णित शैली गाइड का पालन करते हैं, जिसके बाद पहले से ही हजारों डेवलपर्स हैं। कुछ समय के लिए दोनों का उपयोग करें, फिर एक चुनें जो आपके लिए अधिक व्यावहारिक है।