Le JS suivant:
(function() {
"use strict";
$("#target").click(function(){
console.log("clicked");
});
}());
Rendements:
test.js: line 5, col 3, '$' is not defined.
Lorsque peluches à l'aide de JSHint 0.5.5. Des idées?
javascript
jquery
lint
jshint
Isocyanate d'allyle
la source
la source
jquery.js
à votre page?$
n'est pas défini.Réponses:
Si vous utilisez une version relativement récente de JSHint, l'approche généralement préférée consiste à créer un fichier .jshintrc à la racine de votre projet et à y mettre cette configuration:
Cela déclare à JSHint que $ est une variable globale, et la valeur false indique qu'elle ne doit pas être remplacée.
Le fichier .jshintrc n'était pas pris en charge dans les versions très anciennes de JSHint (comme la v0.5.5 comme la question d'origine en 2012). Si vous ne pouvez pas ou ne voulez pas utiliser le fichier .jshintrc, vous pouvez l'ajouter en haut du fichier de script:
Il y a aussi une option raccourcie "jquery" jshint comme vu sur la page d'options JSHint .
la source
/*global $:false, jQuery:false */
./* global ... */
? J'importe généralement un script avec toutes mes fonctions dans monmain
donc c'est lourd de définir un par un ...Vous pouvez également ajouter deux lignes à votre .jshintrc
Cela indique à jshint qu'il existe deux variables globales.
la source
Tout ce que vous devez faire est de mettre
"jquery": true
dans votre.jshintrc
.Selon la référence des options JSHint :
la source
Voici une petite liste heureuse à mettre dans votre .jshintrc
que j'ajouterai à cette liste au fil du temps.
la source
Si vous utilisez un éditeur IntelliJ tel que WebStorm, PyCharm, RubyMine ou IntelliJ IDEA:
Dans la section Environnements de Fichier / Paramètres / JavaScript / Outils de qualité du code / JSHint, cochez la case jQuery.
la source
Au lieu de recommander l'habituel "désactiver les globaux JSHint", je recommande d'utiliser le modèle de module pour résoudre ce problème. Il garde votre code "contenu" et améliore les performances (basé sur les "10 choses que j'ai apprises sur Jquery" de Paul Irish ).
J'ai tendance à écrire mes modèles de module comme ceci:
Vous pouvez obtenir ces autres avantages de performance (expliqués plus ici ):
window
déclaration d'objet passée est également minifiée. par exemplewindow.alert()
devenirm.alert()
.window
objet.window
propriété ou une méthode, empêchant une traversée coûteuse de la chaîne de portée, par exemplewindow.alert()
(plus rapide) par rapport àalert()
(plus lente) les performances.la source
"}(window))
"dans votre exemple - j'ai également eu des problèmes avec jQuery et Highcharts). Je n'ai pas trouvé d'autre moyen de la désactiver que de définir un global pour le fichier, qui défait alors le but.browser: true
indique à JSHint que vous attendez un environnement de navigateur (oùwindow
est déjà défini).Si vous utilisez un éditeur IntelliJ, sous
Vous pouvez taper n'importe quoi, par exemple
console:false
, et cela l'ajoutera également à la liste (.jshintrc) - en tant que global.la source
Pour corriger cette erreur lors de l'utilisation de l'implémentation JSHint en ligne :
la source
Vous voulez probablement faire ce qui suit,
pour éviter de lancer une erreur de peluchage.
la source