Esta pregunta se hizo antes: problemas para entender lo que sucede durante javascript for loop, pero el autor de la pregunta no obtuvo la respuesta correcta y yo también. Aprendí C ++ y Python antes, así que me familiaricé con loop, pero cuando practico este código:
let text = ""; let i; for(i=0; i<5; i++) {text += "The number is " + i + " ";} document.write(text);el resultado es totalmente diferente a lo que esperaba. Visité W3schools pero no encuentro la respuesta https://www.w3schools.com/js/js_loop_for.asp
https://www.w3schools.com/js/tryit.asp?filename=tryjs_loop_for_om3
Esperaba que el resultado fuera "" porque el texto no se puede cambiar, pero el código se imprime: "El número es 0 El número es 1 El número es 2 El número es 3 El número es 4". Mi pregunta es por qué la impresión se ejecuta en el ciclo aunque la impresión está fuera del ciclo. ¡Muchos gracias!
La impresión se ejecuta como espera: solo una vez al final. En el ciclo, cada vez que se agrega una parte adicional al text . Eso es:
[iteration 0] "" [iteration 1] "The number is 0 " [iteration 2] "The number is 0 The number is 1" [iteration 3] "The number is 0 The number is 1 The number is 2" etc.Luego, al final, imprime la Cadena final, que es la concatenación de todas las Cadenas parciales que 'pegó' juntas.
Decir x += y es lo mismo que decir x = x + y . Las variables estándar (var y let) aún son mutables, por lo que si las inicializa como una cadena vacía, aún puede agregarlas o reemplazarlas más tarde.
Intente convertir text en una const en su lugar, y debería haber un TypeError en tiempo de ejecución porque intenta reasignar una constante.
por qué la salida no es una cadena vacía porque la variable de texto ya no está vacía después del bucle for. ha asignado una cadena cuando se repite para que la variable de texto ya no esté vacía