Išorinių ir vidinių funkcijų parametrai JavaScript
Padarykime taip, kad ir išorinė funkcija, ir vidinė priimtų parametrus:
function test(num) {
function func(localNum) {
console.log(localNum);
}
}
Perduokime išorinės funkcijos parametrą į vidinės funkcijos iškvietimą:
function test(num) {
function func(localNum) {
console.log(localNum); // išves 1
}
func(num); //!! perduodame parametrą
}
test(1); // perduodame parametrą skaičių
Pasirodo, kad vidinėje funkcijoje bus
prieinamas kintamasis num kaip išorinis
kintamasis iš tėvinės funkcijos ir kintamasis
localNum, kuris yra vidinis kintamasis
vidinės funkcijos.
Abu šie kintamieji turės vienodas reikšmes:
function test(num) {
function func(localNum) {
console.log(num); // išves 1
console.log(localNum); // išves 1
}
func(num);
}
test(1);
Skirtumas tarp jų bus toks: jei
vidinėje funkcijoje pakeisite kintamąjį
num - jis pasikeis ir išorinėje funkcijoje:
function test(num) {
function func(localNum) {
num = 2; // keičiame kintamąjį num
}
func(num); // perduodame parametrą
console.log(num); // išves 2
}
test(1); // perduodame parametrą skaičių
O kintamasis localNum bus lokalus.
Jo pakeitimai nesukels jokių
pakeitimų išorinėje funkcijoje. Be to, pats
kintamasis localNum nebus matomas
išorėje nuo vidinės funkcijos:
function test(num) {
function func(localNum) {
localNum = 2; // keičiame kintamąjį num
}
func(num); // perduodame parametrą
}
test(1); // perduodame parametrą skaičių
Nustatykite, nepaleisdami kodo, kas bus išvesta į konsolę:
function test(num) {
function func(localNum) {
console.log(localNum);
}
func(num);
}
test(1);
Nustatykite, nepaleisdami kodo, kas bus išvesta į konsolę:
function test(num) {
function func(localNum) {
console.log(localNum);
}
func(num + 1);
}
test(1);
Nustatykite, nepaleisdami kodo, kas bus išvesta į konsolę:
function test(num) {
function func(localNum) {
console.log(num);
}
func(num + 1);
}
test(1);
Nustatykite, nepaleisdami kodo, kas bus išvesta į konsolę:
function test(num) {
function func(localNum) {
localNum = 2;
}
func(num);
console.log(num);
}
test(1);
Nustatykite, nepaleisdami kodo, kas bus išvesta į konsolę:
function test(num) {
function func(localNum) {
localNum = 2;
}
func(num);
console.log(localNum);
}
test(1);
Nustatykite, nepaleisdami kodo, kas bus išvesta į konsolę:
function test(num) {
function func(localNum) {
num = 2;
}
func(num);
console.log(num);
}
test(1);