Soy nuevo en el desarrollo de software y trato de comprender los conceptos básicos de JavaScript. En el siguiente código, si escribo iterator.next() en lugar de charAt en "while", el resultado cambia. ¿Puede explicarme por qué solo devuelve 1 cuando escribo iterator.next directamente?
const str = '123'; const iterator = str[Symbol.iterator]() let charAt = iterator.next() while (!charAt.done) { console.log(charAt.value) charAt = iterator.next() // output: "1" // "2" // "3" } const str = '123'; const iterator = str[Symbol.iterator]() let charAt = iterator.next() while (!iterator.next().done) { console.log(charAt.value) charAt = iterator.next() // output: "1" }Es más fácil ver si tienes una cuerda más larga.
const str = '12345678'; const iterator = str[Symbol.iterator]() let charAt = iterator.next() while (!iterator.next().done) { console.log(charAt.value) charAt = iterator.next() // output: "1" } Debido a que llamas a next() en dos lugares diferentes dentro del bucle (así como una vez fuera del bucle), cada vez que recorres el bucle, avanzas dos lugares.