Parametrii funcțiilor externe și interne în JavaScript

Să facem astfel încât atât funcția externă cât și cea internă să accepte parametri:

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

Să transmitem parametrul funcției externe în apelul funcției interne:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum); // va afișa 1
  }
  
  func(num); //!! transmitem parametrul
}

test(1); // transmitem ca parametru numărul

Rezultă că în funcția internă va fi accesibilă variabila num ca variabilă externă din funcția părinte și variabila localNum, fiind variabilă locală a funcției interne.

Ambele aceste variabile vor avea aceleași valori:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(num); // va afișa 1
    console.log(localNum); // va afișa 1
  }
  
  func(num);
}

test(1);

Diferența dintre ele va fi următoarea: dacă în funcția internă se modifică variabila num - ea se va schimba și în funcția externă:

javascriptfunction test(num) {
  function func(localNum) {
    num = 2; // schimbăm variabila num
  }
  
  func(num);   // transmitem parametrul
  console.log(num);  // va afișa 2
}

test(1); // transmitem ca parametru numărul

Iar variabila localNum va fi locală. Modificările ei nu vor duce la niciun schimb în funcția externă. Și variabila localNum în sine nu va fi vizibilă în afara funcției interne:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2; // schimbăm variabila num
  }
  
  func(num); // transmitem parametrul
}

test(1); // transmitem ca parametru numărul
Задание 1

Stabiliți, fără a rula codul, ce se va afișa în consolă:

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

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

Stabiliți, fără a rula codul, ce se va afișa în consolă:

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

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

Stabiliți, fără a rula codul, ce se va afișa în consolă:

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

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

Stabiliți, fără a rula codul, ce se va afișa în consolă:

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

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

Stabiliți, fără a rula codul, ce se va afișa în consolă:

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

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

Stabiliți, fără a rula codul, ce se va afișa în consolă:

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

test(1);