Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    15

    Assegnare a una variabile globale una funzione interna

    Buongiorno,

    sto seguendo la guida base di Javascript di HTML e devo dire che mi sto trovando molto bene. Talvolta mi capita di esulare un pò e trovare info anche in discussioni varie di forum.

    Mi è capitato di leggere questa affermazione:

    'assegnando una funzioni interna anonima a una variabile globale possiamo, mediante la variabile globale, invocare la funzione interna all'esterno della funzione', del tipo:

    var x;
    function somma(){
    x = function(){
    return 7;
    };
    };
    x(); //secondo quello che ho letto dovrebbe ritornare 7

    A me invece da errore e segnala che x NON è una funzione....

    Qualcuno riesce a risolvere il mio dubbio?

    Grazie mille

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,690
    Salve, in quella situazione è corretto che x non sia una funzione; il suo valore è undefined. La questione è abbastanza semplice: x non risulta valorizzata a meno che non sia eseguita la funzione somma(), dove x viene appunto valorizzata come funzione.

    Qui lo script rivisto con qualche commento per comprendere meglio cosa avviene:
    codice:
    var x;            // dichiaro x ma non le assegno alcun valore. Di default risulta undefined
    function somma(){ // questa funzione è dichiarata qui ma non viene eseguita finchè non è richiamata
      x = function(){ // lo script dentro somma() non viene eseguito fintanto che somma() non è richiamata
        return 7;
      };
    };
    console.log(x);   // qui x risulta dichiarata ma non è stata ancora valorizzata. Ha valore undefined e non può quindi essere richiamata come una funzione
    somma();          // qui viene eseguita la funzione somma e lo script in essa contenuto. La variabile x viene quindi valorizzata come una funzione
    console.log(x()); // qui x può essere richiamata come funzione. Restituisce il valore 7 come impostato sopra
    Apri la console web del tuo browser per vedere l'output.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    15
    Che stupidina che sono a volte !!! Ovvio, ovvio!

    Grazie mille!

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    15
    Colgo l'occasione per ringraziare tutti voi che lavorate in questo sito, perché date l'opportunità anche a chi è alle prime esperienze di imparare e capire, aprendo strade professionali anche a persone in difficoltà. Grazie

    Vorrei aggiungere che esistono molti siti che parlano di programmazione, ma le vostre lezioni non danno nulla per scontato e quindi sono le migliori che ho trovato per chi non ha conoscenze pregresse nel settore e ha bisogno di capire i concetti prima di ogni altra cosa.

  5. #5
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,690
    Quote Originariamente inviata da ThankGod Visualizza il messaggio
    Colgo l'occasione per ringraziare tutti voi che lavorate in questo sito, perché date l'opportunità anche a chi è alle prime esperienze di imparare e capire, aprendo strade professionali anche a persone in difficoltà. Grazie

    Vorrei aggiungere che esistono molti siti che parlano di programmazione, ma le vostre lezioni non danno nulla per scontato e quindi sono le migliori che ho trovato per chi non ha conoscenze pregresse nel settore e ha bisogno di capire i concetti prima di ogni altra cosa.


    Ne saranno lieti gli autori delle guide, gli amministratori e la redazione di Html.it.

    Buono studio e un sereno proseguimento.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.