2010-09-10 9 views
10

मुझे इन त्रुटियों को क्यों प्राप्त होता है?मैं JSLint चेतावनी को कैसे संबोधित करूं "साइड इफेक्ट्स के लिए 'नया' उपयोग न करें"?

लाइन 32 9 चरित्र 60 में समस्या: दुष्प्रभावों के लिए 'नया' का उपयोग न करें। लाइन 330 चरित्र 61 पर

new widget.StyledDropdown(dojo.byId("sTitle"));

समस्या: साइड इफेक्ट के लिए उपयोग 'नए' मत करो। लाइन 336 चरित्र 57 पर

new widget.StyledDropdown(dojo.byId("sSuffix"));

समस्या: साइड इफेक्ट के लिए उपयोग 'नए' मत करो। लाइन पर

true,{shortenName : true,maxChars : 20});

समस्या 338 चरित्र 129: साइड इफेक्ट के लिए उपयोग 'नए' मत करो।

new widget.StyledDropdown(dojo.byId("sCountry"),USPS.Address.countrySw...

+4

आपके आठ अन्य प्रश्नों में से कोई भी स्वीकार्य उत्तर प्राप्त नहीं हुआ है? कोई नहीं? –

+0

मैं गलत प्रश्न पूछ रहा था। लेकिन मुझे अपने मुद्दों का हल हो गया। –

उत्तर

21

आप नव निर्मित वस्तुओं के लिए एक संदर्भ है, जो एक कोड गंध है भंडारण नहीं कर रहे हैं।

जेएसलिंट कह रहा है, "आप कुछ ऑब्जेक्ट्स बना रहे हैं लेकिन उन्हें तुरंत हटा रहे हैं; केवल एक ही संभावित कारण यह है कि आप ऐसा कर सकते हैं कि वस्तुओं को बनाने का कार्य दुष्प्रभाव है, जो अजीब है।"

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

+7

+1, लेकिन * भगवान * मुझे उस शब्द से नफरत है। –

+0

यदि आपका मतलब है "कोड गंध", तो मैं भी ऐसा करता हूं, लेकिन दुर्भाग्य से यह काफी उपयुक्त है। –

+3

@ टिम: हाँ, यही मेरा मतलब है। हम सिर्फ "गरीब अभ्यास" क्यों नहीं कह सकते? –

1

रणनीति को पुनर्विचार करना सबसे अच्छा है, लेकिन अधिकतर, विकास चक्र के दौरान तकनीकी ऋण को संभालना एक विकल्प नहीं है।

यदि आप JSHint का उपयोग कर रहे हैं तो आप मामले के आधार पर इस विकल्प को ओवरराइड कर सकते हैं। अपमानजनक कोड के दायरे में इस jshint टिप्पणी जोड़ें।

/* jshint -W031 */ 
new widget.StyledDropdown(dojo.byId("sTitle")); 
new widget.StyledDropdown(dojo.byId("sSuffix")); 
... 

इनलाइन कॉन्फ़िगरेशन फ़ंक्शन स्कॉप्ड हैं। तो टिप्पणी के दायरे से बाहर कुछ भी अभी भी चेक किया जाएगा।

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