Usar ==
para comparar com zero simplesmente não é um erro ou perigoso ao comparar um valor que é garantido ser um número. Por exemplo:
var arr = ["foo"];
var arrIsEmpty = (arr.length == 0);
Eu tendo a usar ==
nessas situações e é uma decisão puramente estilística. Gostaria que JSHint respeitasse meus desejos bem informados.
Você conhece a opção eqeqeq
, certo? É daí que vem esse erro, defini-lo como false irá livrá-lo desse caso. Ou você está procurando por algo mais específico, como apenas suprimir as comparações com 0
(e não comparações com outros valores)?
eqeqeq é o caso geral. Parece haver uma verificação separada para comparação com 0 que reclama mesmo se eqeqeq for falso.
O que eu realmente quero é ser capaz de suprimir todas as formas de reclamações de JSHint sobre o uso de == e! =, Mas é a comparação com 0 que evita isso.
Ah, entendi. O código relacionado está aqui, definitivamente chamando essa comparação (entre outras):
https://github.com/jshint/jshint/blob/6140ade7437799e182347bf2d39ec68c3c3d0263/src/jshint.js#L2201 -L2215
https://github.com/jshint/jshint/blob/6140ade7437799e182347bf2d39ec68c3c3d0263/src/jshint.js#L1338 -L1346
Você pode desativar este aviso por seu código.
Para outras pessoas que podem ter dificuldade em fazer uso da resposta de valueof, definir "-W041": false
parece funcionar.
Obrigado @privman
Para sua informação, também encontrei mais detalhes aqui
Existe uma motivação para manter W041
avisos em vigor quando "eqeqeq": false
?
Eles proíbem efetivamente o uso de ==
e !=
em situações afetadas.
Comentários muito úteis
Para outras pessoas que podem ter dificuldade em fazer uso da resposta de valueof, definir
"-W041": false
parece funcionar.