2012-05-02 16 views
17

निम्नलिखित कोड:JSHint एक चर-इन चर 'बुरा' मानता है। इसका क्या मतलब है?

var things = {'foo':'bar'} 
for (thing in things) { 
    console.log(thing) 
} 

लगातार JSHint में निम्न त्रुटि पैदा करता है:

Bad for in variable 'thing'. 

मैं क्या 'बात' चर 'बुरे' बनाता है समझ में नहीं आता - जैसा कि आप देख सकते हैं, यह है कहीं और इस्तेमाल नहीं किया जा रहा है। Jshint को यह त्रुटि नहीं मानने के लिए मुझे अलग-अलग क्या करना चाहिए?

+9

यह वैश्विक है, जो हमेशा खराब होता है (बुरा बुरा बुरा बुरा बुरा)। 'चीजों में (var चीजों में) के लिए प्रयास करें। पता नहीं है कि यह त्रुटि के कारण क्यों है :) –

+1

जेएसहिंट स्थानीय स्कोप में 'इन' चर परिभाषित करने के लिए चाहता है (यानी बाहरी कार्य में नहीं)। यह इस मुद्दे से संबंधित है: https://github.com/jshint/jshint/issues/329 – dave1010

+2

चूंकि 'खराब' बहुत अस्पष्ट है, इसलिए मैंने jshint को एक पुल अनुरोध सबमिट किया ताकि यह स्पष्ट रूप से कह सके कि चर वैश्विक है। – mikemaccana

उत्तर

26

वे हमेशा होते हैं - अगर उन्हें घोषित नहीं किया जाता है। जोड़ने का प्रयास करें यदि thing को पहले घोषित नहीं किया गया है।

for (var thing in things) { 
    console.log(thing) 
} 

या

var thing; 

//more code 

for (thing in things) { 
    console.log(thing) 
} 
+8

धन्यवाद! मेरी इच्छा है कि 'खराब चर' के बजाय जिशिंट 'अनदेखा चर' कहें - यह बहुत स्पष्ट होगा। – mikemaccana

+0

आपका स्वागत है! – Dutchie432

3

अपने कोड थोड़ा संशोधित किया जाता है, सुनिश्चित करें कि सभी के उपयोग से पहले घोषित किया गया है।

var things = {'foo':'bar'}, thing; 
for (thing in things) { 
    console.log(thing) 
} 
संबंधित मुद्दे