2010-03-23 11 views
14

निम्नलिखित सरल कोड परिणामों को "सख्त उल्लंघन" में चलाएं। त्रुटि संदेश। मैं प्रलेखन खोजने का प्रयास क्यों कर रहा हूं, और इसे कैसे ठीक किया जाए। किसी भी इनपुट की सराहना की जाएगी।jslint: इस कोड का परिणाम "सख्त उल्लंघन" त्रुटि संदेश क्यों होता है?

त्रुटि:

Error: 

Problem at line 6 character 4: Strict violation. 

} (this)); 

नमूना कोड:

/*jslint browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, strict: true, newcap: true, immed: true */ 

"use strict"; 

(function (window) { 
} (this)); 

सादर, Egil।

+1

प्रासंगिक? http://twitter.com/kangax/status/8980322050 – kennytm

+0

केनीटीएम, हो सकता है, क्या कोई इसकी पुष्टि कर सकता है? –

उत्तर

8

मैं jslint के स्रोत कोड है, जो कहते हैं पर एक नज़र था:

function reservevar(s, v) { 
    return reserve(s, function() { 
     if (this.id === 'this' || this.id === 'arguments' || 
       this.id === 'eval') { 
      if (strict_mode && funct['(global)']) { 
       warning("Strict violation.", this); 
      } else if (option.safe) { 
       warning("ADsafe violation.", this); 
      } 
     } 
     return this; 
    }); 
} 

मुझे लगता है कि वास्तव में jslint शिकायत है कि आप एक वैश्विक संदर्भ में this उपयोग कर रहे हैं।

17

रोलाण्ड ILLIG के जवाब पर विस्तार करने के लिए:

गैर सख्त मोड में, this वैश्विक विस्तार के लिए बाध्य है जब यह कुछ और करने के लिए बाध्य नहीं है। सख्त मोड में यह अपरिभाषित है। इससे इसे किसी विधि के बाहर उपयोग करने में त्रुटि होती है।

+1

'यह' वैश्विक संदर्भ में उपयोग किए जाने पर वैश्विक दायरे को संदर्भित करता है, लेकिन सख्त मोड के तहत विधियों में नहीं। –

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