2011-01-31 11 views
5

जब की तरह कोड लिखने इस jsLint गर्भित वैश्विक बारे में शिकायत:जावास्क्रिप्ट में निहित वैश्विक बचना (JSlint)

var Test = (function(){ 
    var fnc = function(x){ 
     alert("pew: "+x); 
    }; 

    return { 
     fnc: fnc 
    }; 
}()); 

Test.fnc("hat"); 

(विशेष रूप से, 'गर्भित वैश्विक: चेतावनी 4')

क्या माना जाता है सही तरीका इससे बचने के लिए? मेरे सहज प्रतिक्रिया यह है, लेकिन मैं आश्वस्त नहीं हूँ यह 'सही' है:

var Test2 = (function(global){ 
    var alert = global.alert; 

    var fnc = function(x){ 
     alert("pew: "+x); 
    }; 

    return { 
     fnc: fnc 
    }; 
}(this)); 

Test2.fnc("hat"); 

संपादित करें: आम सहमति है कि समस्या यह है कि मैं एक वैश्विक तक पहुँचने कर रहा हूँ नहीं है प्रतीत हो रहा है, यह और अधिक है कि मैं jslint नहीं कह रहा हूँ ग्लोबल्स क्या हैं। मैं इसे देखने के लिए थोड़ी देर तक छोड़ दूंगा कि किसी और के पास इनपुट है, तो मैं एक जवाब चुनूंगा।

उत्तर

8

आप एक टिप्पणी

/*global alert $ document window*/

साथ अपनी फ़ाइल पहले जोड़ें कर सकते हैं आमतौर पर यह है कि मैं कितना JSLint बताते हैं कि यह निहित नहीं है, लेकिन बाहरी।

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

+2

आईआईआरसी वैरिएबल नाम घोषणाओं को अल्पविराम से अलग करने की आवश्यकता नहीं है? –

+0

@ZackTheHuman वहाँ अंतरिक्ष अलग है। जेएसलिंट कहता है कि अल्पविराम अलग हो गया है। मैंने त्रुटियों के बिना हमेशा एक स्पेस सेपरेटेड सूची का उपयोग किया है। यह शायद – Raynos

+0

दोनों को संभालता है ध्यान दें कि टिप्पणी की शुरुआत और 'वैश्विक' के बीच कोई जगह नहीं होनी चाहिए अन्यथा jslint इसे संसाधित नहीं करता है। – oyenamit

4

jsLint के लिए ज्ञात कार्यों को बनाने के लिए जेएसलिंट के "ब्राउज़र को मानें" और "कंसोल, अलर्ट, ..." विकल्प का उपयोग करें। सभी उपलब्ध विकल्पों की सूची के लिए http://www.jslint.com/lint.html#options देखें।

0

मुझे लगता है कि अपने रास्ते (और अच्छा) सही है, लेकिन global.alert घोषित करने के लिए कोई जरूरत नहीं है, बस का उपयोग global.alert("pew: "+x);

+0

'var alert = global.alert' वास्तव में सुविधा के लिए है, इसलिए यह वही व्यवहार करता है जैसे कि अगर मैंने अभी त्रुटि छोड़ी है। – david

+0

मुझे इसका उपयोग करके कोई सुविधा दिखाई नहीं दे रही है। लेकिन इस भाग के बावजूद, मुझे लगता है कि आपका समाधान न केवल सही है, यह अच्छा है। –

1

बजाय JSHint के लिए खोज उन लोगों के लिए नहीं है, वहाँ एक विकल्प "ब्राउज़र" जो सेट किया जा सकता है "सच" करने के लिए और सभी आम globals संभालती है। "Jquery" के लिए वही। मैंने इसे gradle-js-plugin source code से सीखा।

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