Usar ==
para comparar con cero simplemente no es un error ni es peligroso cuando se compara un valor que se garantiza que es un Número. Por ejemplo:
var arr = ["foo"];
var arrIsEmpty = (arr.length == 0);
Tiendo a usar ==
en estas situaciones y es una decisión puramente estilística. Me gustaría que JSHint respetara mis deseos bien informados.
Conoce la opción eqeqeq
, ¿verdad? De ahí es de donde proviene este error, establecerlo en falso lo liberará de este caso. ¿O está buscando algo más específico, como solo suprimir las comparaciones con 0
(y no las comparaciones con otros valores)?
eqeqeq es el caso general. Parece haber una verificación separada para comparar con 0 que se queja incluso si eqeqeq es falso.
Lo que realmente quiero es poder suprimir todas las formas de quejas de JSHint sobre el uso de == y! =, Pero es la comparación con 0 lo que lo impide.
Hmm ya veo. El código relacionado está aquí, definitivamente está llamando específicamente a esa comparación (entre otros):
https://github.com/jshint/jshint/blob/6140ade7437799e182347bf2d39ec68c3c3d0263/src/jshint.js#L2201 -L2215
https://github.com/jshint/jshint/blob/6140ade7437799e182347bf2d39ec68c3c3d0263/src/jshint.js#L1338 -L1346
Puede desactivar esta advertencia por su código.
Para otros que pueden tener dificultades para hacer uso de la respuesta de valueof, establecer "-W041": false
parece ser la solución.
Gracias @privman
Para su información, también encontré más detalles aquí.
¿Existe una motivación para mantener las advertencias W041
vigentes cuando "eqeqeq": false
?
Prohíben efectivamente el uso de ==
y !=
en situaciones afectadas.
Comentario más útil
Para otros que pueden tener dificultades para hacer uso de la respuesta de valueof, establecer
"-W041": false
parece ser la solución.