Parametri delle funzioni esterne e interne in JavaScript
Facciamo in modo che sia la funzione esterna che quella interna accettino parametri:
function test(num) {
function func(localNum) {
console.log(localNum);
}
}
Passiamo il parametro della funzione esterna alla chiamata della funzione interna:
function test(num) {
function func(localNum) {
console.log(localNum); // visualizzerà 1
}
func(num); //!! passiamo il parametro
}
test(1); // passiamo un numero come parametro
Risulta che nella funzione interna sarà
disponibile la variabile num come variabile esterna
dalla funzione genitore e la variabile
localNum, che è una variabile locale
della funzione interna.
Entrambe queste variabili avranno gli stessi valori:
function test(num) {
function func(localNum) {
console.log(num); // visualizzerà 1
console.log(localNum); // visualizzerà 1
}
func(num);
}
test(1);
La differenza tra loro sarà la seguente: se
all'interno della funzione interna si modifica la variabile
num - essa cambierà anche nella funzione esterna:
function test(num) {
function func(localNum) {
num = 2; // modifichiamo la variabile num
}
func(num); // passiamo il parametro
console.log(num); // visualizzerà 2
}
test(1); // passiamo un numero come parametro
Mentre la variabile localNum sarà locale.
Le sue modifiche non porteranno ad alcun
cambiamento nella funzione esterna. E inoltre
la variabile localNum stessa non sarà visibile
dall'esterno della funzione interna:
function test(num) {
function func(localNum) {
localNum = 2; // modifichiamo la variabile num
}
func(num); // passiamo il parametro
}
test(1); // passiamo un numero come parametro
Determinate, senza eseguire il codice, cosa verrà visualizzato in console:
function test(num) {
function func(localNum) {
console.log(localNum);
}
func(num);
}
test(1);
Determinate, senza eseguire il codice, cosa verrà visualizzato in console:
function test(num) {
function func(localNum) {
console.log(localNum);
}
func(num + 1);
}
test(1);
Determinate, senza eseguire il codice, cosa verrà visualizzato in console:
function test(num) {
function func(localNum) {
console.log(num);
}
func(num + 1);
}
test(1);
Determinate, senza eseguire il codice, cosa verrà visualizzato in console:
function test(num) {
function func(localNum) {
localNum = 2;
}
func(num);
console.log(num);
}
test(1);
Determinate, senza eseguire il codice, cosa verrà visualizzato in console:
function test(num) {
function func(localNum) {
localNum = 2;
}
func(num);
console.log(localNum);
}
test(1);
Determinate, senza eseguire il codice, cosa verrà visualizzato in console:
function test(num) {
function func(localNum) {
num = 2;
}
func(num);
console.log(num);
}
test(1);