[Javascript] JSHint और jQuery: '$' परिभाषित नहीं किया गया है


Answers

आप अपने .jshintrc में दो लाइन भी जोड़ सकते हैं

  "globals": {
    "$": false,
    "jQuery": false
  }

यह jshint बताता है कि दो वैश्विक चर हैं।

Question

निम्नलिखित जेएस:

(function() {
  "use strict";

  $("#target").click(function(){
    console.log("clicked");
  });

}());

पैदावार:

test.js: line 5, col 3, '$' is not defined.

जब JSHint 0.5.5 का उपयोग कर लिंट किया गया। कोई विचार?




अपने .jshintrc में डालने के लिए यहां एक छोटी सी छोटी सूची है
मैं इस सूची में समय बीतने पर जोड़ दूंगा।

{
  // other settings...
  // ENVIRONMENTS
  // "browser": true, // Is in most configs by default
  "node": true,
  // others (e.g. yui, mootools, rhino, worker, etc.)
  "globals": {
    "$":false,
    "jquery":false,
    "angular":false
    // other explicit global names to exclude
  },
}



यदि आप नीचे IntelliJ संपादक का उपयोग कर रहे हैं

  • पसंद / सेटिंग
    • जावास्क्रिप्ट
      • कोड गुणवत्ता उपकरण
        • JSHint
          • पूर्वनिर्धारित (नीचे), सेट पर क्लिक करें

आप कुछ भी टाइप कर सकते हैं, उदाहरण के लिए console:false , और यह सूची (.jshintrc) में भी जोड़ देगा - साथ ही वैश्विक के रूप में।




सामान्य "जेएसएचआईंट ग्लोबल्स को बंद करें" की सिफारिश करने के बजाय, मैं इस समस्या को ठीक करने के लिए मॉड्यूल पैटर्न का उपयोग करने की सलाह देता हूं। यह आपके कोड को "निहित" रखता है और एक प्रदर्शन बढ़ावा देता है (पॉल आयरिश की "10 चीजें जिन्हें मैंने Jquery के बारे में सीखा" ) पर आधारित है।

मैं अपने मॉड्यूल पैटर्न इस तरह लिखना चाहता हूं:

(function (window) {
    // Handle dependencies
    var angular = window.angular,
        $ = window.$,
        document = window.document;

    // Your application's code
}(window))

आप इन अन्य प्रदर्शन लाभ प्राप्त कर सकते हैं ( here और समझाया गया here ):

  • कोड को छोटा करते समय, window ऑब्जेक्ट घोषणा में पारित होने से भी कम हो जाता है। उदाहरण के लिए window.alert() m.alert() बनें।
  • स्वयं निष्पादित अज्ञात फ़ंक्शन के अंदर कोड केवल window ऑब्जेक्ट के 1 उदाहरण का उपयोग करता है।
  • window संपत्ति या विधि में कॉल करते समय आप पीछा करते हैं, जिससे स्कोप श्रृंखला के महंगे ट्रैवर्सल को रोकते हैं जैसे window.alert() (तेज़) बनाम alert() (धीमी) प्रदर्शन।
  • "नेमस्पेसिंग" और रोकथाम के माध्यम से कार्यों का स्थानीय दायरा (ग्लोबल्स बुरा हैं)। यदि आपको इस कोड को अलग-अलग स्क्रिप्ट में तोड़ने की आवश्यकता है, तो आप उन प्रत्येक स्क्रिप्ट के लिए एक सबमिशन बना सकते हैं, और उन्हें एक मुख्य मॉड्यूल में आयात कर सकते हैं।