Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di myotis
    Registrato dal
    May 2010
    Messaggi
    33

    chiarimento cicli for annidati

    Premetto che può benissimo sembrare una domanda stupida ma in effetti un problemino c'è...

    Da quello che ho sempre studiato scrivere, per un ciclo for:

    codice:
    var counter = 0;
    for (counter; counter<10; counter++) { .... }
    equivale a:

    codice:
    var counter;
    for (counter=0; counter<10; counter++) { .... }
    Semplicemente nel secondo caso prima si dichiara la variabile e poi la si inizializza.
    Correggetemi se sbaglio.

    Se ho ragione, prendiamo due semplicissimi cicli for annidati:
    codice:
    var decine=0;
    var unita=0;
    
    	for (decine; decine < 3; decine++) {
    
    		for (unita; unita < 10; unita++) {
    
    		document.write(decine + "" + unita + "
    "); } }

    codice:
    var decine;
    var unita;
    
    	for (decine=0; decine < 3; decine++) {
    
    		for (unita=0; unita < 10; unita++) {
    
    		document.write(decine + "" + unita + "
    "); } }
    Nel primo caso però il ciclo for esterno non passa alla seconda iterazione, cioè le decine non vengono incrementate, e di conseguenza vengono stampati solo i numeri da 00 a 09... provare per credere.
    E' un mio errore di concetto ritenere le due sintassi uguali o è effettivamente normale questo comportamento?

    PS: con PHP ho lo stesso problema.
    Grazie.
    "Better to live as king of beasts
    Than as a lamb scared and weak"

  2. #2
    Utente di HTML.it L'avatar di ilgiovo
    Registrato dal
    Aug 2001
    Messaggi
    518
    non è vero che non passa alla seconda iterazione.. il problema è che dichiarando le variabili globalmente quando arrivia alla seconda iterazione del for per le decine la variabile unita è già a 10, quindi non entra nel secondo ciclo for!


    debuggare per credere

    io per non sbagliarmi faccio sempre la dichiarazione della variabile all'interno del ciclo, così evito problemi

    for (var i = 0; i < 10; i++) {

    }
    Cacca!

  3. #3
    Utente di HTML.it L'avatar di myotis
    Registrato dal
    May 2010
    Messaggi
    33
    Originariamente inviato da ilgiovo
    non è vero che non passa alla seconda iterazione.. il problema è che dichiarando le variabili globalmente quando arrivia alla seconda iterazione del for per le decine la variabile unita è già a 10, quindi non entra nel secondo ciclo for!
    L'avevo detto che era una domanda stupida
    No, scherzi a parte, immaginavo si trattasse di qualcosa del genere ma non me ne ero accorto al 100%.

    io per non sbagliarmi faccio sempre la dichiarazione della variabile all'interno del ciclo, così evito problemi:

    for (var i = 0; i < 10; i++) {...}
    Ok, però a voler essere precisi non si tratta tanto di dichiarazione quanto di inizializzazione.... è questo che crea il problema.

    Grazie 1000 per la risposta!
    Ciao!
    "Better to live as king of beasts
    Than as a lamb scared and weak"

  4. #4
    Utente di HTML.it L'avatar di ilgiovo
    Registrato dal
    Aug 2001
    Messaggi
    518
    Di nulla quello che volevo dire è che la sintassi che ti ho proposto è utile per per evitare sia problemi di inizializzazione che di scoping.
    Cacca!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.