以下JS:
(function() {
"use strict";
$("#target").click(function(){
console.log("clicked");
});
}());
产量:
test.js: line 5, col 3, '$' is not defined.
使用JSHint 0.5.5衬棉时。有任何想法吗?
$
则它是未定义的。
以下JS:
(function() {
"use strict";
$("#target").click(function(){
console.log("clicked");
});
}());
产量:
test.js: line 5, col 3, '$' is not defined.
使用JSHint 0.5.5衬棉时。有任何想法吗?
$
则它是未定义的。
Answers:
如果使用相对较新的JSHint版本,通常首选的方法是在项目的根目录中创建一个.jshintrc文件,并将此配置放入其中:
{
"globals": {
"$": false
}
}
这向JSHint声明$是全局变量,而false表示不应覆盖它。
真的较旧的JSHint版本(例如像2012年的原始问题那样的v0.5.5)不支持.jshintrc文件。如果您不能或不想使用.jshintrc文件,则可以在脚本文件的顶部添加此文件:
/*globals $:false */
还有一个简写的“ jquery” jshint选项,如JSHint选项页面所示。
/*global $:false, jQuery:false */
。
/* global ... */
?我通常将具有所有功能的脚本导入到我的脚本中,main
因此一一定义是很麻烦的……
这是一个快乐的小清单,可放入您的.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
},
}
如果您使用的是WebStorm,PyCharm,RubyMine或IntelliJ IDEA等IntelliJ编辑器:
在“文件/设置/ JavaScript /代码质量工具/ JSHint”的“环境”部分中,单击“ jQuery”复选框。
我建议不要使用通常的“关闭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()
(慢)性能。"}(window))
在您的示例中为”-我在jQuery和Highcharts上也遇到了问题)。除了为文件定义全局变量外,我没有找到其他方法来将其关闭,然后挫败了目标
browser: true
告诉JSHint ,您期望使用浏览器环境(window
已在其中定义)。
要在使用在线JSHint实现时解决此错误:
您可能想要执行以下操作,
const $ = window.$
为了避免它引发掉毛错误。
jquery.js
到页面吗?