O seguinte JS:
(function() {
"use strict";
$("#target").click(function(){
console.log("clicked");
});
}());
Rendimentos:
test.js: line 5, col 3, '$' is not defined.
Quando pintado usando JSHint 0.5.5. Alguma ideia?
javascript
jquery
lint
jshint
Isocianato de Alilo
fonte
fonte
jquery.js
à sua página?$
é indefinido.Respostas:
Se você estiver usando uma versão relativamente recente do JSHint, a abordagem geralmente preferida é criar um arquivo .jshintrc na raiz do seu projeto e colocar esta configuração nele:
Isso declara para JSHint que $ é uma variável global e false indica que ele não deve ser substituído.
O arquivo .jshintrc não era suportado em versões realmente antigas do JSHint (como a v0.5.5, como a pergunta original em 2012). Se você não pode ou não deseja usar o arquivo .jshintrc, pode adicioná-lo na parte superior do arquivo de script:
Também existe uma opção abreviada de "jquery" jshint, como visto na página de opções JSHint .
fonte
/*global $:false, jQuery:false */
./* global ... */
? Eu normalmente importar um script com todas as minhas funções em minhamain
por isso é complicado para definir um por um ...Você também pode adicionar duas linhas ao seu .jshintrc
Isso informa ao jshint que existem duas variáveis globais.
fonte
Tudo que você precisa fazer é definir o
"jquery": true
seu.jshintrc
.De acordo com a referência de opções JSHint :
fonte
Aqui está uma pequena lista feliz para colocar no seu .jshintrc
que adicionarei a essa lista com o passar do tempo.
fonte
Se você estiver usando um editor IntelliJ, como WebStorm, PyCharm, RubyMine ou IntelliJ IDEA:
Na seção Ambientes de Arquivo / Configurações / JavaScript / Ferramentas de qualidade de código / JSHint, clique na caixa de seleção jQuery.
fonte
Em vez de recomendar o habitual "desligar os globais JSHint", recomendo usar o padrão do módulo para corrigir esse problema. Ele mantém seu código "contido" e aumenta o desempenho (com base nas "10 coisas que aprendi sobre Jquery" de Paul Irish ).
Eu costumo escrever meus padrões de módulo assim:
Você pode obter esses outros benefícios de desempenho (explicados mais aqui ):
window
declaração de objeto passada também é minificada. por exemplo,window.alert()
tornar-sem.alert()
.window
objeto.window
propriedade ou método, impedindo a travessia cara da cadeia de escopo, por exemplo, desempenho (maiswindow.alert()
rápido) versusalert()
(mais lento).fonte
"}(window))
"no seu exemplo - eu também tive problemas com o jQuery e o Highcharts). Não encontrei uma maneira de desativá-lo além de definir um global para o arquivo, que, em seguida, derrota o propósito.browser: true
diz ao JSHint que você espera um ambiente de navegador (ondewindow
já está definido).Se você estiver usando um editor IntelliJ, em
Você pode digitar qualquer coisa, por exemplo
console:false
, e isso também será adicionado à lista (.jshintrc) - como global.fonte
Para corrigir este erro ao usar a implementação JSHint online :
fonte
Você provavelmente quer fazer o seguinte,
para evitar que isso aconteça.
fonte