Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    9

    Discussione su codice

    Ho iniziato da poco a studiare javascript. Non capisco questo codice e volevo discuterlo in modo approfondito.

    codice:
    function delayTimer(delay){      
         var timer;                 
         return function(fn){       
              timer=clearTimeout(timer);
              if(fn)
                   timer=setTimeout(function(){   
                        fn();
                   },delay);
              return timer;
             }
        }
    Domande:
    1) cosa fa e come si usa
    2) perché non ha scritto timer=setTimeout("fn();",delay); ?? perché alla setTimeout passa una funzione
    anonima che a sua volta esegue fn()?
    3) non capisco il senso di fn(). fn e' il parametro passato alla prima funzione anonima. Oggi variabile
    e' un oggetto, ma cosa vuol dire fn() ?
    4) fn inzialmente e' null? come fa a non essere null??

    beh per ora basta cosi'
    grazie

  2. #2
    Utente di HTML.it L'avatar di Neocron
    Registrato dal
    Jul 2002
    Messaggi
    524
    codice:
    function delayTimer(delay){      
    
         var timer;                 
    
         return function(fn){       
         
             timer = clearTimeout(timer);
             
             if(fn) timer = setTimeout(function(){ fn(); }, delay);
             
             return timer;
         
           }
    }
    1) Quanto scritto qui è qualcosa di inutile.

    2) Forse per richiamare il puntatore di funzione "fn", posto come argomento della funzione che ritorna (per capire i puntatori devi studiare il linguaggio C).

    3) Per capire i puntatori devi studiare linguaggio C.

    4) Da quello che vedo è impossibile arrivare a dare un valore all'argomento fn in qualsiasi modo.


    Ma dove lo hai trovare questo codice? Hai un link?

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    9
    Me l'ha scritto mio cugino che fa il programmatore per "testare" la mia preparazione Javascript

    1) Conosco i puntatori (almeno cosa sono, le basi in C), ma dove sta qui il puntatore?
    Se js ha i puntatori, sono definiti in modo diverso dal C...

    2) se "fn" fosse definita fuori da questa funzione, come globale, allora girerebbe giusto?
    lui setta il timeout solo se fn e' != null, quindi fn potrebbe essere qualsiasi cosa, basta che sia
    definita.

    3) fn();
    cosa vuol dire??!?

    grazie
    ciao

  4. #4
    Utente di HTML.it L'avatar di Neocron
    Registrato dal
    Jul 2002
    Messaggi
    524
    Originariamente inviato da slyfer
    Me l'ha scritto mio cugino che fa il programmatore per "testare" la mia preparazione Javascript
    non puoi chiedere a lui spiegazioni dei suoi errori?

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    9
    quali errori? non ci sono errori in questa funzione...

    e' una funzione che ritorna una funzione

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    9
    ho scoperto a cosa serve il codice.
    Serve per lanciare funzioni a tempo.
    Ora cerchero' di capire come si usa.

  7. #7
    Codice PHP:
    var fndelayTimer(1000);
    fn(function(){alert('pippo');})
    //Oppure
    delayTimer(1000)(function(){alert('pippo');}); 
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    9
    non hai capito come funzionano le closure
    ritarda 2 funzioni myFunc1, myFunc2 di 4 secondi , se hai capito come funziona quel codice

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    9
    [ post cancellato ]

  10. #10
    Originariamente inviato da whisher
    Codice PHP:
    var fndelayTimer(1000);
    fn(function(){alert('pippo');})
    //Oppure
    delayTimer(1000)(function(){alert('pippo');}); 
    oppure ancora:
    codice:
    var fn=function(){alert('pippo');}
    delayTimer(1000)(fn);

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.