Oltre a un semplice codice funzionante mi piacerebbe capire anche il suo funzionamento.
Ciao, mi scuso in anticipo ma mi preme fare una piccola premessa prima di darti qualche risposta tecnica: la tua richiesta non è inquadrabile solo da un punto di vista tecnico/pratico (cioè non parliamo di un qualche problema tecnico sul tuo script) ma, secondo quanto hai scritto qui, è chiaro che ti mancano diverse basi riguardo la programmazione JavaScript che sono più che altro teoriche e, in genere, apprendibili con lo studio di guide, manuali, tutorial, ecc. Pertanto è difficile trattare l'argomento in oggetto senza rischiare di cadere in una relazione di tipo tutor-allievo (situazione da evitare in un forum pubblico come questo).
Per chiudere con la premessa, senza alcuna offesa ma giusto per chiarire, in altri contesti simili avresti potuto ricevere una semplice risposta del tipo "RTFM"; fondamentalmente ciò che ti ha risposto marino51 (che quoto), anche se lui è stato comunque più educato e clemente nel proporti da quale parte iniziare a leggere.
Venendo alla parte tecnica (cerco di essere il più sintetico possibile):
- Il termine
callback non è adatto in questo specifico caso (
vedi guida). La tua è meglio definirla semplicemente "funzione".
Vorrei portare la variabile "p" nella callback Log().
- per passare un qualsivoglia "dato" ad una qualsiasi funzione, basta passarlo come parametro richiamando la funzione stessa secondo la semplice sintassi
tuaFunzione(datoDaPassare); (
vedi guida)
Nel tuo caso dovresti avere una cosa del tipo:
Codice:
function a(){
var p = 5;
Log(p);
};
Occhio però, in questo caso tu stai sostanzialmente passando il
valore della variabile
p, non il suo "riferimento". Cioè la variabile
p non sarà comunque "visibile" dentro la funzione
Log() ma il suo valore (secondo il tuo esempio) verrà passato alla variabile
x, che è un argomento della funzione
Log() e sarà quindi una variabile locale dentro tale funzione. Se invece vuoi che
p sia visibile dentro la funzione
Log(), e quindi direttamente accessibile dentro questa, potresti definire
p in modo globale (vedi guida proposta da marino51).
- L'uso del metodo
call() non ha alcun senso in questo caso, non capisco perché tu lo stia usando (
vedi guida).
Se il tuo intento è quello di capire come funziona, e in quali contesti usare tale metodo, spero che le guide proposte ti aiutino in qualche modo ad appianare qualche carenza. Ad ogni modo, se trovi realmente difficoltà pratiche, sarebbe opportuno riformulare la richiesta in modo più specifico, magari definendo meglio il contesto di utilizzo e l'obiettivo che vorresti raggiungere.
Buon proseguimento.