Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

172
Visualizações
¿Por qué for of loop acepta la palabra clave const?

Una variable declarada con la palabra clave const no se puede reinicializar. Entonces, ¿por qué la palabra clave const funciona para for of loop? Por ejemplo, si tengo un ciclo como for(const x of array){...code here...} . ¿Por qué funciona en lugar de arrojar un error como en el caso de for(const x=0;x<array.length;x++){...code here...} ?
¿Se debe al hecho de que el último for loop mencionado reinicializa el valor de la variable x pero, solo lo declara una vez, en otras palabras, la variable x se declara para todo el ciclo?
Pero, ¿qué pasa con el bucle for of ? ¿Está redeclarando el valor de x cada vez que se realiza una iteración?
Si no es así, ¿qué factores hacen for of funcione el bucle anterior mencionado?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

En el segundo ejemplo, establece const x en cero y luego intenta modificar el valor con x++. Como su nombre lo indica, no puede modificar el valor de una constante después de declararla. Si intentara x++ dentro del ciclo for/of, también generaría un error. Presumiblemente, su bucle for/of solo lee el valor de x y no lo altera (digo presumiblemente porque no compartió el código para esta parte).

about 4 years ago · Juan Pablo Isaza Relatório

0

El bucle for tradicional es un elemento básico de muchos idiomas y, a menudo, toma una forma como

 for(x=0;x<array.length;x++)

Esta construcción funciona debido al hecho de que la x es visible no solo dentro del bucle, sino también entre iteraciones , por lo que x++ funciona. Los bucles for de JavaScript fueron diseñados para funcionar de manera similar. Una variable declarada en la declaración de un bucle for es visible en todo el cuerpo del bucle y entre iteraciones. (las cosas se vuelven un poco más extrañas con let , pero eso no es realmente relevante para el problema aquí)

for..of es una bestia completamente diferente. A pesar de que usa la misma palabra - for - que la construcción for(;;) , funciona de manera bastante diferente. for..of invoca el iterador del objeto para cada iteración, y los valores devueltos por el iterador no se inicializan antes del bucle; son específicos de cada iteración , por lo que tener algo como x++ no tendría mucho sentido.

for..of , en pseudocódigo:

 iterator = getIteratorFromObject(); loop { if (iterator.done) break; nextValue = iterator(); // execute loop body with nextValue }

El valor devuelto por el iterador, cuando se inicializa con const (que tiene alcance de bloque, no alcance de función), tiene sentido que se limite solo al bloque de esa iteración en particular. (Si intentara reasignar el identificador const , al igual que en un bucle for tradicional, obtendría un error).

A diferencia de un for tradicional, en realidad no hay ningún valor inicial para inicializar (aparte del iterador, pero el consumo del iterador se abstrae detrás del motor de JavaScript).

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda