Ulkoisten ja sisäisten funktioiden parametrit JavaScriptissä
Tehdään niin, että sekä ulkoinen funktio että sisäinen ottavat vastaan parametreja:
function test(num) {
function func(localNum) {
console.log(localNum);
}
}
Annetaan ulkoisen funktion parametri sisäisen funktion kutsulle:
function test(num) {
function func(localNum) {
console.log(localNum); // tulostaa 1
}
func(num); //!! välitetään parametri
}
test(1); // välitetään parametrina numero
Käy niin, että sisäisessä funktiossa on
käytettävissä muuttuja num ulkoisena
muuttujana vanhempifunktiosta ja muuttuja
localNum, joka on sisäisen funktion
lokaali muuttuja.
Molemmilla näistä muuttujista on samat arvot:
function test(num) {
function func(localNum) {
console.log(num); // tulostaa 1
console.log(localNum); // tulostaa 1
}
func(num);
}
test(1);
Ero niiden välillä on seuraava: jos
sisäisessä funktiossa muutetaan muuttujaa
num - se muuttuu myös ulkoisessa funktiossa:
function test(num) {
function func(localNum) {
num = 2; // muutetaan muuttujaa num
}
func(num); // välitetään parametri
console.log(num); // tulostaa 2
}
test(1); // välitetään parametrina numero
Ja muuttuja localNum on lokaali.
Sen muutokset eivät johda mihinkään
muutoksiin ulkoisessa funktiossa. Eikä
muuttuja localNum itsessään näy
sisäisen funktion ulkopuolella:
function test(num) {
function func(localNum) {
localNum = 2; // muutetaan muuttujaa num
}
func(num); // välitetään parametri
}
test(1); // välitetään parametrina numero
Päätä, käyttämättä koodia, mitä tulostetaan konsoliin:
function test(num) {
function func(localNum) {
console.log(localNum);
}
func(num);
}
test(1);
Päätä, käyttämättä koodia, mitä tulostetaan konsoliin:
function test(num) {
function func(localNum) {
console.log(localNum);
}
func(num + 1);
}
test(1);
Päätä, käyttämättä koodia, mitä tulostetaan konsoliin:
function test(num) {
function func(localNum) {
console.log(num);
}
func(num + 1);
}
test(1);
Päätä, käyttämättä koodia, mitä tulostetaan konsoliin:
function test(num) {
function func(localNum) {
localNum = 2;
}
func(num);
console.log(num);
}
test(1);
Päätä, käyttämättä koodia, mitä tulostetaan konsoliin:
function test(num) {
function func(localNum) {
localNum = 2;
}
func(num);
console.log(localNum);
}
test(1);
Päätä, käyttämättä koodia, mitä tulostetaan konsoliin:
function test(num) {
function func(localNum) {
num = 2;
}
func(num);
console.log(num);
}
test(1);