Параметры внешней и внутренней функций в 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);