Parametry funkcji zewnętrznych i wewnętrznych w JavaScript

Sprawmy, aby zarówno funkcja zewnętrzna jak i wewnętrzna przyjmowały parametry:

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

Przekażmy parametr funkcji zewnętrznej do wywołania funkcji wewnętrznej:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum); // wypisze 1
  }
  
  func(num); //!! przekazujemy parametr
}

test(1); // przekazujemy parametrem liczbę

Okazuje się, że w funkcji wewnętrznej będzie dostępna zmienna num jako zmienna zewnętrzna z funkcji nadrzędnej oraz zmienna localNum, będąca zmienną lokalną funkcji wewnętrznej.

Obie te zmienne będą miały takie same wartości:

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

test(1);

Różnica między nimi będzie następująca: jeśli w funkcji wewnętrznej zmienimy zmienną num - zmieni się ona również w funkcji zewnętrznej:

javascriptfunction test(num) {
  function func(localNum) {
    num = 2; // zmieniamy zmienną num
  }
  
  func(num);   // przekazujemy parametr
  console.log(num);  // wypisze 2
}

test(1); // przekazujemy parametrem liczbę

A zmienna localNum będzie lokalna. Jej zmiany nie będą prowadzić do żadnych zmian w funkcji zewnętrznej. I sama zmienna localNum nie będzie widoczna na zewnątrz funkcji wewnętrznej:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2; // zmieniamy zmienną num
  }
  
  func(num); // przekazujemy parametr
}

test(1); // przekazujemy parametrem liczbę
Задание 1

Określ, nie uruchamiając kodu, co zostanie wypisane w konsoli:

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

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

Określ, nie uruchamiając kodu, co zostanie wypisane w konsoli:

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

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

Określ, nie uruchamiając kodu, co zostanie wypisane w konsoli:

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

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

Określ, nie uruchamiając kodu, co zostanie wypisane w konsoli:

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

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

Określ, nie uruchamiając kodu, co zostanie wypisane w konsoli:

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

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

Określ, nie uruchamiając kodu, co zostanie wypisane w konsoli:

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

test(1);