以下JS:
(function() {
"use strict";
$("#target").click(function(){
console.log("clicked");
});
}());
收率:
test.js: line 5, col 3, '$' is not defined.
使用JSHint 0.5.5时使用。有什么想法吗?
答案 0 :(得分:375)
如果您使用的是相对较新版本的JSHint,通常首选的方法是在项目的根目录中创建一个.jshintrc文件,并将此配置放入其中:
{
"globals": {
"$": false
}
}
这向JSHint声明$是一个全局变量,false表示不应该覆盖它。
真正旧版本的JSHint不支持.jshintrc文件(例如v0.5.5,就像2012年的原始问题一样)。如果您不能或不想使用.jshintrc文件,可以在脚本文件的顶部添加:
/*globals $:false */
JSHint options page上还有一个简写的“jquery”jshint选项..
答案 1 :(得分:147)
您还可以在.jshintrc
中添加两行 "globals": {
"$": false,
"jQuery": false
}
这告诉jshint有两个全局变量。
答案 2 :(得分:50)
您需要做的就是在"jquery": true
中设置.jshintrc
。
jquery的
此选项定义jQuery JavaScript库公开的全局变量。
答案 3 :(得分:16)
这是一个快乐的小清单,放在你的.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
},
}
答案 4 :(得分:7)
如果您使用的是IntelliJ编辑器,例如WebStorm,PyCharm,RubyMine或IntelliJ IDEA:
在File / Settings / JavaScript / Code Quality Tools / JSHint的Environments部分中,单击jQuery复选框。
答案 5 :(得分:3)
我建议使用module pattern来修复此问题,而不是推荐通常"关闭JSHint全局"它保持您的代码"包含"并提升表现(基于Paul Irish'} {/ 3}}。
我倾向于写这样的模块模式:
(function (window) {
// Handle dependencies
var angular = window.angular,
$ = window.$,
document = window.document;
// Your application's code
}(window))
您可以获得这些其他性能优势(更多解释为"10 things I learned about Jquery"):
window
对象声明也会缩小。例如window.alert()
成为m.alert()
。window
对象的1个实例。window
属性或方法时切入追逐,防止对范围链进行昂贵的遍历,例如window.alert()
(更快)与alert()
(更慢)的表现。答案 6 :(得分:2)
使用the online JSHint implementation时修复此错误:
答案 7 :(得分:1)
如果您使用的是IntelliJ编辑器,请在
下您可以键入任何内容,例如console:false
,它也会将其添加到列表(.jshintrc)中 - 作为全局。
答案 8 :(得分:0)
您可能想要执行以下操作,
const $ = window.$
为了避免它引发掉毛错误。