¿Está bien el siguiente patrón en javascript, o está mal visto? Y si es lo último, ¿cuál sería un mejor enfoque?
function arithmetic_sum(n) { for (var [i, sum] = [0, 0]; i <= n; sum += i++); return sum; } console.log(arithmetic_sum(10)); // 55Este es JavaScript válido.
A algunas personas les puede gustar eso, pero está un poco desactualizado y mezcla estilos antiguos y nuevos (var, pero en combinación con desestructuración).
Además, tener código dentro de la cláusula de interacción del bucle for puede resultar confuso.
Preferiría esto en su lugar:
function arithmetic_sum(n) { let sum = 0; for (let i = 0; i <= n; i++) { sum += i; } return sum; } console.log(arithmetic_sum(10)); // 55Realmente depende de la persona para ser honesto. A algunas personas les gustará este patrón porque hace que el código sea más corto pero, en mi opinión personal, hace que el código sea más difícil de entender.
La razón por la que esto funciona es por la elevación de javascript. Puedes leer más sobre esto aquí. https://www.w3schools.com/js/js_hoisting.asp
Ahora, si tuviera que cambiar este código para usarlo let este código se rompa.
Creo que también es importante entender cómo var difiere de let & const .
Este artículo explica muy bien las diferencias https://medium.com/@codingsam/awesome-javascript-no-more-var-working-title-999428999994
Yo personalmente escribiría este código así:
function arithmetic_sum(n) { let sum = 0; for (let i = 0; i <= n; i++) sum += i; return sum; } console.log(arithmetic_sum(10)); // 55