219

以下JS:

(function() {
  "use strict";

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

}());

产量:

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

使用 JSHint 0.5.5 进行 linted 时。有任何想法吗?

4

9 回答 9

387

如果您使用的是相对较新的 JSHint 版本,通常首选的方法是在项目的根目录中创建一个 .jshintrc 文件,并将此配置放入其中:

{
    "globals": {
        "$": false
    }
}

这向 JSHint 声明 $ 是一个全局变量,而 false 表示它不应该被覆盖。

.jshintrc 文件在真正旧版本的 JSHint 中不受支持(例如 v0.5.5,就像 2012 年的原始问题一样)。如果您不能或不想使用 .jshintrc 文件,可以在脚本文件的顶部添加:

/*globals $:false */

JSHint 选项页面上还有一个速记“jquery” jshint 选项。

于 2012-01-13T16:45:03.480 回答
152

您还可以在 .jshintrc 中添加两行

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

这告诉 jshint 有两个全局变量。

于 2013-07-19T15:40:13.100 回答
53

您需要做的就是"jquery": true在您的.jshintrc.

根据JSHint 选项参考

jQuery

此选项定义由 jQuery JavaScript 库公开的全局变量。

于 2014-09-03T09:01:10.270 回答
17

这是一个快乐的小列表,可以放入您的 .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
  },
}
于 2014-02-20T16:50:25.820 回答
8

如果您使用的是 IntelliJ 编辑器,例如 WebStorm、PyCharm、RubyMine 或 IntelliJ IDEA:

在 File/Settings/JavaScript/Code Quality Tools/JSHint 的 Environments 部分中,单击 jQuery 复选框。

于 2013-08-13T18:31:52.637 回答
3

我不推荐通常的“关闭 JSHint 全局变量”,而是建议使用模块模式来解决这个问题。它使您的代码保持“包含”并提高性能(基于 Paul Irish 的“我从 Jquery 中学到的 10 件事”)。

我倾向于像这样编写我的模块模式:

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

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

您可以获得这些其他性能优势(在此处进行更多说明

  • 缩小代码时,传入的window对象声明也会被缩小。例如window.alert()成为m.alert().
  • 自执行匿名函数内的代码仅使用window对象的 1 个实例。
  • 您在调用属性或方法时切入正题window,防止代价高昂的作用域链遍历,例如window.alert()(更快)与alert()(更慢)性能。
  • 通过“命名空间”和包含(全局变量是邪恶的)的局部函数范围。如果您需要将此代码分解为单独的脚本,您可以为每个脚本创建一个子模块,并将它们导入到一个主模块中。
于 2014-08-14T04:55:06.700 回答
2

如果您使用的是 IntelliJ 编辑器,请在

  • 首选项/设置
    • Javascript
      • 代码质量工具
        • JSHint
          • 预定义(在底部),单击设置

您可以输入任何内容,例如console:false,它会将其添加到列表 (.jshintrc) 以及 - 作为全局。

于 2014-01-09T01:01:14.270 回答
2

要在使用在线 JSHint 实现时修复此错误:

  • 点击“CONFIGURE”(页面中间一栏顶部)
  • 启用“jQuery”(在底部的“ASSUME”部分下)
于 2015-02-20T22:37:37.523 回答
0

您可能想要执行以下操作,

const $ = window.$

以避免它抛出 linting 错误。

于 2019-10-18T07:09:56.740 回答