Disculpe si hay algo mal con mi pregunta, soy un principiante.
El primer código, que tiene la variable "html" declarada primero fuera del ciclo for, imprime todos los elementos de la matriz.
<p id="demo"></p> <script> var fruits = ["apple", "banana", "mango", "orange", "strawberry"]; var html = ""; for(var i = 0; i < fruits.length; i++) { html += "<p>" + fruits[i] + "</p>"; } document.getElementById("demo").innerHTML = html; </script>Pero cuando muevo la declaración de la variable dentro del ciclo for, solo se imprime el último elemento de la matriz.
<p id="demo"></p> <script> var fruits = ["apple", "banana", "mango", "orange", "strawberry"]; for(var i = 0; i < fruits.length; i++) { var html = ""; html += "<p>" + fruits[i] + "</p>"; } document.getElementById("demo").innerHTML = html; </script>¿Por qué es esto?
Eso es porque, cuando declaras la variable dentro del bucle, se declarará cada vez que se repita el bucle. Entonces, la última ejecución del ciclo declarará una variable vacía 'html' y luego empujará el elemento a esta matriz. Entonces, solo hay un elemento dentro de su matriz.