JSLint: का उपयोग परिभाषित करने से पहले किया गया था


95

नमस्ते मेरे पास 3 जावास्क्रिप्ट फाइलें हैं।

  • jquery.js
  • utility.js
  • file1.js

File1.js में मेरे पास है

jQuery.noConflict()
jQuery(document).ready(function($) { 
 // ....
});

मुझे एक त्रुटि मिलती है कि परिभाषित होने से पहले 'jQuery' का उपयोग किया गया था। और इसे परिभाषित करने से पहले 'दस्तावेज़' का उपयोग किया गया था।

मैं इस चेतावनी से कैसे सुरक्षित रूप से छुटकारा पा सकता हूं।

यदि मैं करता हूँ

var document = document || {}; 

फिर मेरी यूटिलिटी में। js अगर इसका उपयोग किया जाता है, तो यह IE में शून्य होगा और फ़ायरफ़ॉक्स में ठीक होगा।

इसका सबसे अच्छा समाधान क्या है?


जेएस लिंट के संभावित डुप्लिकेट : परिभाषित किए जाने से पहले 'शॉर्टकट' का उपयोग किया गया था । इसके अलावा, सुनिश्चित करें कि आपके पास विकल्पों में चुने हुए ब्राउज़र हैं।
एंडी ई

@ChunpingWang ने ध्यान दिया कि आप अभी भी SO पर सक्रिय थे और यह प्रश्न एक स्वीकृत उत्तर याद कर रहा था। क्या इन उत्तरों में से कुछ गायब हैं जो उन्हें स्वीकार्य बनाने के लिए आवश्यक हैं? लगता है कि क्वेंटिन के जवाब से समस्या हल हो जाएगी। आपके प्रश्न का उत्तर देने के लिए किसी भी अतिरिक्त जानकारी की आवश्यकता है?
रफिन

जवाबों:


169

से प्रलेखन

JSLint भी एक / * वैश्विक * / निर्देश को पहचानता है जो JSLint को इंगित कर सकता है कि इस फ़ाइल में उपयोग किए गए चर अन्य फ़ाइलों में परिभाषित किए गए थे। टिप्पणी में नामों की अल्पविराम से अलग की गई सूची हो सकती है। प्रत्येक नाम वैकल्पिक रूप से एक बृहदान्त्र द्वारा पीछा किया जा सकता है और या तो सच है या गलत, यह दर्शाता है कि चर को इस फ़ाइल द्वारा सौंपा जा सकता है, और यह दर्शाता है कि असाइनमेंट की अनुमति नहीं है (जो कि डिफ़ॉल्ट है)। निर्देश समारोह के कार्यक्षेत्र का सम्मान करता है।

कुछ ग्लोबल्स आपके लिए पूर्वनिर्धारित हो सकते हैं। वेब ब्राउज़र, जैसे दस्तावेज़ और addEventListener द्वारा आपूर्ति की जाने वाली मानक वैश्विक गुणों को पूर्वनिर्धारित करने के लिए एक ब्राउज़र (ब्राउज़र) विकल्प का चयन करें।

उदाहरण:

/*jslint browser: true*/
/*global $, jQuery*/

25
नोट: इससे पहले globalकि आप /* global var, var2 */काम नहीं करता आप एक जगह नहीं डाल सकते । /*global var, var2*/कार्य
रेडिक्सहाउंड

4
बहुवचन समतुल्य है और साथ ही साथ काम /*globals */भी करता है : और चर की सूची में जोड़ते समय और भी अधिक समझ में आता है
रॉबर्ट कोरिटनिक

2
तो JSLint का समाधान आपकी सभी फाइलों से गायब होने के बारे में शिकायत करता है, यह आपकी सभी फ़ाइलों के लिए एक पंक्ति जोड़ने के लिए है ... यह भयानक सलाह है।
सेरिन

@ कैरिन - नहीं, JSLint का समाधान आपके बारे में एक चर का उपयोग करते हुए शिकायत करता है कि इसके लिए एक परिभाषा नहीं मिल सकती है यह बताने के लिए कि आपने इसे किसी अन्य फ़ाइल में परिभाषित किया है (उदाहरण के लिए, उदाहरण के लिए, चर नाम में एक टाइपो बनाते हुए। जो बाद में आपके कार्यक्रम को तोड़ देगा)।
क्वेंटिन

1
@ क्वेंटिन, हाँ, और इसके लिए आपके फिक्स की आवश्यकता है कि आप हर एक फ़ाइल में "इसे jQuery के बारे में बताएं"। यह काम का एक बहुत बड़ा हिस्सा है जो कोई लाभ नहीं प्रदान करता है। आप JSLint में केवल उस चेक को अक्षम कर सकते हैं।
सेरिन

30

जैसा कि क्वेंटिन कहता है, एक /*global*/निर्देश है।

यहाँ एक उदाहरण है (इसे फ़ाइल के शीर्ष पर रखें):

/*global var1,var2,var3,var4,var5*/

सुनिश्चित करें कि प्रारंभिक वैश्विक विवरण उसी पंक्ति पर है /*, या अन्यथा यह टूट जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.