Išorinių ir vidinių funkcijų parametrai JavaScript

Padarykime taip, kad ir išorinė funkcija, ir vidinė priimtų parametrus:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum);
  }
}

Perduokime išorinės funkcijos parametrą į vidinės funkcijos iškvietimą:

javascriptfunction 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:

javascriptfunction 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:

javascriptfunction 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:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2; // keičiame kintamąjį num
  }
  
  func(num); // perduodame parametrą
}

test(1); // perduodame parametrą skaičių
Задание 1

Nustatykite, nepaleisdami kodo, kas bus išvesta į konsolę:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum);
  }
  
  func(num);
}

test(1);
Задание 2

Nustatykite, nepaleisdami kodo, kas bus išvesta į konsolę:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum);
  }
  
  func(num + 1);
}

test(1);
Задание 3

Nustatykite, nepaleisdami kodo, kas bus išvesta į konsolę:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(num);
  }
  
  func(num + 1);
}

test(1);
Задание 4

Nustatykite, nepaleisdami kodo, kas bus išvesta į konsolę:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2;
  }
  
  func(num);
  console.log(num);
}

test(1);
Задание 5

Nustatykite, nepaleisdami kodo, kas bus išvesta į konsolę:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2;
  }
  
  func(num);
  console.log(localNum);
}

test(1);
Задание 6

Nustatykite, nepaleisdami kodo, kas bus išvesta į konsolę:

javascriptfunction test(num) {
  function func(localNum) {
    num = 2;
  }
  
  func(num);
  console.log(num);
}

test(1);