javascript - script - sintaxis js online
El error "inesperado++" en jslint (8)
Esta pregunta ya tiene una respuesta aquí:
¿Cuál es la mejor práctica para eso entonces?
Jslint explica que "agrega confusión". No lo veo realmente ...
EDITAR: El código, según lo solicitado:
var all,l,elements,e;
all = inElement.getElementsByTagName(''*'');
l = all.length;
elements = [];
for (e = 0; e < l; (e++))
{
if (findIn)
{
if (all[e].className.indexOf(className) > 0)
{
elements[elements.length] = all[e];
}
} else {
if (all[e].className === className)
{
elements[elements.length] = all[e];
}
}
}
Bucle JSLint friendly
for (i = 0; i < 10; i += 1) {
//Do somthing
}
El verdadero problema del operador ++
es que es un operador con efectos secundarios y, por lo tanto, se opone totalmente al principio de la programación funcional.
La forma " funcional " de implementar i++
sería i = i + 1
donde reasigna explícitamente la variable sin efectos secundarios y luego la usa.
La posibilidad de confusión es que ++
hace dos cosas al agregar un valor AND al reasignarlo a la variable.
Hay algo llamado pre-incremento: ++ i y un i ++ posterior al incremento y hay una diferencia:
var i = 9;
alert(++i); //-> alerts 10
var j = 9;
alert(j++); //-> alerts 9
alert(j); //-> alerts 10 now, as expected
var k = 9;
alert((k++)); //-> still alerts 9 even with extra parentheses
Para evitar confusiones y posibles problemas al usar minificadores, siempre envuelva parens alrededor del operador y su operando cuando se usa junto con el mismo (+ o -).
var i = 0, j = 0;
alert(i++ +j);
Esto agrega iyj (y aumenta i como un efecto secundario) lo que resulta en 0 siendo alertado.
Pero, ¿qué es lo que viene y mueve el espacio?
var i = 0, j = 0;
alert(i+ ++j);
Ahora, esto primero incrementa j, y luego agrega i al nuevo valor de j, lo que resulta en que 1 es alertado.
Esto podría resolverse fácilmente haciendo
var i = 0, j = 0;
alert((i++) +j);
Ahora esto no puede ser equivocado.
Personalmente, prefiero poner declaraciones como i++
en una línea por sí mismos. Incluirlos como parte de una declaración más amplia puede causar confusión para aquellos que no están seguros de lo que se supone que está haciendo la línea.
Por ejemplo, en lugar de:
value = func(i++ * 3);
Yo haría esto:
value = func(i * 3);
i++;
También significa que la gente no tiene que recordar cómo funcionan i++
y ++i
, y elimina la necesidad de aplicar bastantes reglas de preferencia.
Simplemente agregue /*jslint plusplus: true */
en frente de su archivo javascript.
Tenga en cuenta que el operador ++ depende de la posición con respecto a la variable anterior / siguiente y la nueva línea / punto y coma para determinar el orden de las operaciones.
var a = 1;
var b = a++;
console.log(b); // b = 1
console.log(a); // a = 2
var a = 1;
var b = ++a;
console.log(b); // b = 2
console.log(a); // a = 2
Use i += 1
lugar, si desea seguir el consejo de jslint.