Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSHint和jQuery:'$';没有定义_Javascript_Jquery_Lint_Jshint - Fatal编程技术网

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
          • 预定义(在底部),单击“设置”

您可以输入任何内容,例如
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也有问题)。除了为文件定义一个全局设置外,我还没有找到一种关闭它的方法,这会破坏它的用途。@myrosia
      browser: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看到配置文件修改。没有它,他就忽略了它。