Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412

    Non mi trovo col contatore di una variabile interna

    Seguendo il libro Javascript the definitive guide, mi son imbattuto in questo esempio

    Codice PHP:
    function counter() {
       var 
    n=0
       
    return { count: function() {return n++} }

    }

    var 
    c=counter()

    console.log(c.count()) //restituisce 0
    console.log(c.count()) //restituisce 1
    console.log(c.count()) //restituisce 2
    // e cosi via... 
    il fatto è che non riesco a capire perchè la prima volta che eseguo la funzione count() il contatore mi restituisce 0 anziché iniziare da 1.
    Insomma, ad n viene assegnato il valore 0 e già al primo richiamo della funzione count viene eseguito l'n++, dunque perchè non mi restituisce 1 come valore?

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    prima viene eseguito il return poi viene incrementata la variabile...

    codice:
    n=0;
    console.log(n++); //stampa 0 e incrementa la variabile a 1
    console.log(++n); //incrementa la variabile a 2 e stampa 2
    quindi

    codice:
    function counter() { 
       var n=0 
       return { count: function() {return ++n} } 
    }
    oppure inizializzi il contatore a 1

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    si il mio dubbio era che nn riuscivo a capire dal pdv logico com'è che n non risultava subito 1, adesso ho capito

    cmq mi confermi che n in questo caso è una variabile locale che non può essere monitorata in alcun modo? (ad esempio con sintassi del tipo console.log(c.n)

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    è una variabile locale, visibile solo all'interno della funzione stessa.

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.