Javascript JSHint和jQuery:'$';没有定义
以下文件:Javascript JSHint和jQuery:'$';没有定义,javascript,jquery,lint,jshint,Javascript,Jquery,Lint,Jshint,以下文件: (function() { "use strict"; $("#target").click(function(){ console.log("clicked"); }); }()); 收益率: test.js: line 5, col 3, '$' is not defined. 当使用JSHint 0.5.5进行Lint时。有什么想法吗?如果您使用的是相对较新版本的JSHint,通常首选的方法是在项目根目录中创建一个.jshintrc文件,并将此配置放
(function() {
"use strict";
$("#target").click(function(){
console.log("clicked");
});
}());
收益率:
test.js: line 5, col 3, '$' is not defined.
当使用JSHint 0.5.5进行Lint时。有什么想法吗?如果您使用的是相对较新版本的JSHint,通常首选的方法是在项目根目录中创建一个.jshintrc文件,并将此配置放入其中:
{
"globals": {
"$": false
}
}
这向JSHint声明$是一个全局变量,false表示不应重写它
.jshintrc文件在非常旧的JSHint版本中不受支持(例如,与2012年的原始问题一样,v0.5.5)。如果不能或不想使用.jshintrc文件,可以在脚本文件顶部添加以下内容:
/*globals $:false */
还有一个速记“jquery”jshint选项,如..上所示。您还可以在.jshintrc中添加两行
"globals": {
"$": false,
"jQuery": false
}
这告诉jshint有两个全局变量。如果您使用的是IntelliJ编辑器,如WebStorm、PyCharm、RubyMine或IntelliJ IDEA:
在文件/Settings/JavaScript/Code-Quality-Tools/JSHint的Environments部分,单击jQuery复选框。如果您使用的是IntelliJ编辑器,请在
- 首选项/设置
- Javascript
- 代码质量工具
- JSHint
- 预定义(在底部),单击“设置”
- JSHint
- 代码质量工具
- Javascript
您可以输入任何内容,例如
console:false
,它会将其添加到列表(.jshintrc)以及全局列表中。这里有一个小列表,可以放在您的.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
},
}
我不建议使用通常的“关闭JSHint全局函数”,而是建议使用来解决此问题。它使您的代码“被包含”,并提高性能(基于Paul Irish的) 我倾向于这样编写模块模式:
(function (window) {
// Handle dependencies
var angular = window.angular,
$ = window.$,
document = window.document;
// Your application's code
}(window))
您可以获得以下其他性能优势(详细说明):
- 缩小代码时,传入的
对象声明也会缩小。e、 g.窗口
变成window.alert()
m.alert()
- 自执行匿名函数中的代码仅使用
窗口
对象的一个实例 - 在调用
属性或方法时,您就陷入了困境,从而避免了范围链的昂贵遍历,例如窗口
(更快)而窗口.alert()
(更慢)的性能alert()
- 通过“名称空间”和包含的本地功能范围(全局是邪恶的)。如果需要将此代码分解为单独的脚本,可以为每个脚本创建一个子模块,并将它们导入到一个主模块中
.jshintrc
中设置“jquery”:true
根据:
jquery
此选项定义jQuery JavaScript库公开的全局变量
要在使用时修复此错误,请执行以下操作:
- 单击“配置”(页面中间列顶部)
- 启用“jQuery”(在底部的“假设”部分下)
- 您可能需要执行以下操作:
const $ = window.$
为了避免它抛出linting错误。您是否已将
jquery.js
添加到您的页面中?好吧,如果您只提供该代码本身,$
是未定义的。我有这个问题。只需将$更改为angular.element和jshint,这个选项jquery只定义两个只读全局变量:$和jquery。它是/*global$:false,jQuery:false*/
的一个较短版本。对于我的Visual Studio JSHint,该选项称为“假设jQuery”,选项标志就是要做的。对于第一次使用该选项的人:在.jshintrc文件中添加行“jQuery:true”。我发现“/*global$*/的原因是什么?”。(在我的was/*global jQuery*/示例中)是否有一种方法可以为脚本中的所有函数设置此值,而不是在/*global中逐个键入*/代码>?我通常将包含所有函数的脚本导入到我的main
,因此逐个定义很麻烦……如果将“browser”和“node”选项设置为“true”,则此列表中唯一需要的剩余项是$、jquery和angular。有关更多信息,请参阅文档的环境部分:我已经编辑了答案以包含您的更新谢谢@user456584这也是我使用的一种模式,但它并不能解决我最初的问题。JSHint仍然抱怨没有在最后一行(“}(窗口))
“在您的示例中——我对jQuery和Highcharts也有问题)。除了为文件定义一个全局设置外,我还没有找到一种关闭它的方法,这会破坏它的用途。@myrosiabrowser:true
告诉JSHint您需要一个浏览器环境(其中窗口
已经定义)。我喜欢这种方法!这应该是公认的答案。用不同的代码行污染项目中的每一个javascript文件以使语法检查器满意不是一个选项。谢谢,这可能是最好的答案。。。真遗憾,它埋在这里,在升华文本3中哪里可以找到.jshintrc文件?据介绍,我尝试将此选项放在sublimiter.sublimite-settings文件(首选项->包设置->sublimiter->默认设置)中,并尝试在我的项目根目录中创建新的.jshintrc文件(my.jshintrc)。这些都没有帮助我。@Milos在Sublimitext 3中安装了JSHint。转到Tools>JSHint>Set Linting Preferences,它将打开.jshintrc.Nothing,它仍然无法识别“$”符号。当我打开.jshintrc时,它位于路径:\AppData\Roaming\Sublime Text 3\Packages\JSHint Gutter上,我将“jquery”:设置为true,并且什么也没有发生。这比向globals部分添加变量要好得多!这样解决吧!还请注意,您可以通过选中“使用配置文件”覆盖所有内部配置。这将使WS看到配置文件修改。没有它,他就忽略了它。