2013-07-21 5 views
7

जेएसलिंट मुझे "सख्त उल्लंघन" त्रुटि देता है, हालांकि मैं "इस" संदर्भ को उस फ़ंक्शन के अंदर उपयोग करता हूं जो इसे वैश्विक दायरे से छुपाता है।जेएसलिंट इस फ़ंक्शन पर सख्त उल्लंघन त्रुटि क्यों देता है?

function test() { 
    "use strict"; 
    this.a = "b"; 
} 

रिकॉर्ड के लिए, मैं वेबस्टॉर्म में अंतर्निहित जेएसलिंट पार्सर का उपयोग करता हूं।

+0

जब मैं इस कोड को JSLint.com में पेस्ट करता हूं, तो सभी डिफ़ॉल्ट विकल्प, मुझे कोई त्रुटि नहीं मिलती है। उस त्रुटि का संदर्भ क्या था जहां फ़ंक्शन नाम को बदल दिया गया था? – ruffin

+0

मैं वेबस्टॉर्म का उपयोग कर रहा हूं जिसमें शायद जेएसलिंट –

+0

का पुराना संस्करण हो, आपके पास किसी भी मौके का नाम है (समकक्ष) 'test' (आपके लाइव कोड में)? फिर बदलते मामले से उन्हें अलग कर दिया जाएगा। – ruffin

उत्तर

10

ऐसा इसलिए है क्योंकि जेएसलिंट आपके कार्य को कन्स्ट्रक्टर के रूप में नहीं पहचानता है। सम्मेलन से, आपको अपरकेस अक्षरों का उपयोग करना होगा।

function Test() { 
    "use strict"; 
    this.a = "b"; 
} 
+4

आप http://jshint.com देख सकते हैं। यह विनिर्देश के बजाए क्रॉकफोर्ड की राय द्वारा नियंत्रित विकल्पों में आपको लॉक करने के बजाए अधिक नियंत्रण प्रदान करता है। आपके द्वारा चलाई गई समस्या गैर-रचनाकारों के साथ भी होती है, यदि आप उन कार्यों को घोषित कर रहे हैं जिन्हें आप ऑब्जेक्ट पर विधियों के रूप में डालने जा रहे हैं। (उदाहरण के लिए, यदि आपके 'फ़ंक्शन टेस्ट() {...}' के बाद आपके पास 'obj.test = test था; 'तो आप' test' प्रॉपर्टी पर उचित नाम के साथ फ़ंक्शन के साथ समाप्त हो गए, लेकिन बिना किसी प्रयोग किए आईई के साथ समस्याओं की वजह से फंक्शन अभिव्यक्ति नामित किया गया।) –

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