¿Se considera una mala práctica tener efectos secundarios en una declaración if ? Por ejemplo, algo como esto:
'use strict'; let a = 2; if ( a++ > 2) { // ... }O:
'use strict'; let a = 2; if ( a++ > 2, a) { // ... }O:
'use strict'; let a = 2; if ( ++a > 2 && a++) { // ... }Si es así, ¿por qué estaría mal visto y cuál podría ser un mejor enfoque?
Sí, algunos (yo incluido) lo consideran una mala práctica. Hay reglas de linter para evitar esta convención.
¿Por qué?
Porque es menos legible. Desea una sola instrucción para realizar una sola acción. a++ vs ++a no solo hace algo en la expresión (que ya puede considerarse torpe), sino que tampoco parece ser más fácil de leer. Siempre necesito pensar por un momento si el valor devuelto es a o a + 1 .