Параметри на надворешните и внатрешните функции во JavaScript

Ајде да направиме и надворешната функција и внатрешната да прифаќаат параметри:

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

Да го пренесеме параметарот на надворешната функција во повикот на внатрешната функција:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum); // ќе испише 1
  }
  
  func(num); //!! го пренесуваме параметарот
}

test(1); // пренесуваме параметар број

Излегува дека во внатрешната функција ќе биде достапна променливата num како надворешна променлива од родителската функција и променливата localNum, која е локална променлива на внатрешната функција.

Двете од овие променливи ќе имаат исти вредности:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(num); // ќе испише 1
    console.log(localNum); // ќе испише 1
  }
  
  func(num);
}

test(1);

Разликата меѓу нив ќе биде во следново: ако во внатрешната функција се промени променливата num - таа ќе се промени и во надворешната функција:

javascriptfunction test(num) {
  function func(localNum) {
    num = 2; // ја менуваме променливата num
  }
  
  func(num);   // го пренесуваме параметарот
  console.log(num);  // ќе испише 2
}

test(1); // пренесуваме параметар број

А променливата localNum ќе биде локална. Нејзините промени нема да доведат до никакви промени во надворешната функција. А и самата променлива localNum нема да биде видлива надвор од внатрешната функција:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2; // ја менуваме променливата num
  }
  
  func(num); // го пренесуваме параметарот
}

test(1); // пренесуваме параметар број
Задание 1

Определете, без да ја стартувате кодот, што ќе се испише во конзолата:

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

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

Определете, без да ја стартувате кодот, што ќе се испише во конзолата:

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

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

Определете, без да ја стартувате кодот, што ќе се испише во конзолата:

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

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

Определете, без да ја стартувате кодот, што ќе се испише во конзолата:

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

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

Определете, без да ја стартувате кодот, што ќе се испише во конзолата:

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

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

Определете, без да ја стартувате кодот, што ќе се испише во конзолата:

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

test(1);