El siguiente JS:
(function() {
"use strict";
$("#target").click(function(){
console.log("clicked");
});
}());
Rendimientos:
test.js: line 5, col 3, '$' is not defined.
Cuando se alinea usando JSHint 0.5.5. ¿Algunas ideas?
javascript
jquery
lint
jshint
Isocianato de alilo
fuente
fuente
jquery.js
a tu página?$
está definido.Respuestas:
Si está utilizando una versión relativamente reciente de JSHint, el enfoque generalmente preferido es crear un archivo .jshintrc en la raíz de su proyecto y poner esta configuración en él:
Esto declara a JSHint que $ es una variable global, y el falso indica que no debe anularse.
El archivo .jshintrc no era compatible con versiones realmente antiguas de JSHint (como v0.5.5 como la pregunta original en 2012). Si no puede o no quiere usar el archivo .jshintrc, puede agregar esto en la parte superior del archivo de script:
También hay una opción abreviada "jquery" jshint como se ve en la página de opciones de JSHint .
fuente
/*global $:false, jQuery:false */
./* global ... */
? Normalmente importo un script con todas mis funciones en mi,main
por lo que es engorroso definir uno por uno ...También puede agregar dos líneas a su .jshintrc
Esto le dice a jshint que hay dos variables globales.
fuente
Todo lo que necesitas hacer es configurarlo
"jquery": true
en tu.jshintrc
.Según la referencia de opciones de JSHint :
fuente
Aquí hay una pequeña lista feliz para poner en su .jshintrc
que agregaré a esta lista cuando pase el tiempo.
fuente
Si está utilizando un editor IntelliJ como WebStorm, PyCharm, RubyMine o IntelliJ IDEA:
En la sección Entornos de Archivo / Configuración / JavaScript / Herramientas de calidad de código / JSHint, haga clic en la casilla de verificación jQuery.
fuente
En lugar de recomendar el habitual "apagar los globales JSHint", recomiendo usar el patrón de módulo para solucionar este problema. Mantiene su código "contenido" y aumenta el rendimiento (basado en las "10 cosas que aprendí sobre Jquery" de Paul Irish ) ).
Tiendo a escribir los patrones de mi módulo de esta manera:
Puede obtener estos otros beneficios de rendimiento (explicados más aquí ):
window
declaración de objeto pasada también se minimiza. por ejemplo,window.alert()
convertirsem.alert()
.window
objeto.window
propiedad o método, evitando el costoso recorrido de la cadena de alcance, por ejemplowindow.alert()
(más rápido) versusalert()
(más lento) rendimiento.fuente
"}(window))
"en su ejemplo, tuve problemas también con jQuery y Highcharts). No he encontrado una manera de desactivarla que no sea definir un global para el archivo, que luego vence el propósito.browser: true
le dice a JSHint que espera un entorno de navegador (dondewindow
ya está definido).Si está utilizando un editor IntelliJ, en
Puede escribir cualquier cosa, por ejemplo
console:false
, y también lo agregará a la lista (.jshintrc), como global.fuente
Para corregir este error al usar la implementación en línea de JSHint :
fuente
Probablemente quieras hacer lo siguiente,
para evitar que arroje error de linting.
fuente