javascript - script - jslint vs jshint
¿Por qué JSLint se queja de "Unexpected ''else'' after ''return''"? (3)
JSLint se queja de que el siguiente código (ejemplo inútil) no es válido:
(function (x) {
"use strict";
if (x === 1) {
return 1;
} else if (x === 2) {
return -1;
}
return 0;
}(1));
Error: Problema en la línea 4 carácter 9: inesperado ''else'' después de ''return''.
devuelve 1;
¿Se sugiere seriamente que es malo usar declaraciones de devolución dentro de una estructura if / else?
Piensa que esta versión está bien:
(function (x) {
"use strict";
var returnval = 0;
if (x === 1) {
returnval = 1;
} else if (x === 2) {
returnval = -1;
}
return returnval;
}(1));
Es mejor tener una función siempre devolver algo ya que agrega consistencia. Se sabe que JSLint es bastante estricto y lastima los sentimientos de los programadores. No puedo evitarlo. Personalmente creo que la versión 1 está bien
Lo que he encontrado con jslint es que si cumple con las reglas, el 50% es ridículo pero no tiene un impacto negativo en su código. El otro 50% (o así) le dará un buen beneficio. Así que hazlo por el otro 50%. Este ejemplo en particular lo obliga a ser explícito acerca de lo inverso de una condición o similar ... en lugar de dejarlo implícito con otra cosa ... lo mismo se aplica si / else me refiero.
Solo te digo que else
después del return
es superflua. Lo siguiente está bien:
(function (x) {
"use strict";
if (x === 1) {
return 1;
}
if (x === 2) {
return -1;
}
return 0;
}(1));