let printNumTwo; for (let i = 0; i < 3; i++) { if (i === 2) { printNumTwo = function() { return i; }; } } console.log(printNumTwo());salida : 2
¿Cómo se convierte esta salida en 2; explique lo que está sucediendo dentro del ciclo y el alcance de let.
Es simplemente porque la única espera para que la variable printNumTwo contenga una función que devuelva el valor de i (i==2) es solo cuando el contador i es igual a 2 ; de lo contrario, no se ejecuta nada. para todos los demás valores del contador i , printNumTwo no se tocará. Esa es la razón principal.
Bueno, básicamente es un bucle y yo es cuántas veces se repite en palabras simples. Entonces, en su caso, empiezo en 0 y va a 3, lo que significa que se repetirá 3 veces. E hiciste una declaración if dentro de la cual está:
if (i === 2) {//do stuff}Básicamente, solo verificó que si i es 2, o si es el segundo ciclo, se ejecutará. Entonces, cuando era el segundo ciclo, la consola registró 2 por el código que escribiste:
printNumTwo = function() { return i; };Y luego printNumTwo se registró en la consola (printNumTwo era i , o 2). Espero que tenga sentido.
Debido a que este código devuelve i cuando es igual a 2 y al llamar a la función printNumTwo() , también devuelve 2 porque el código detuvo el ciclo devolviéndolo.