Parâmetros de funções externas e internas em JavaScript

Vamos fazer com que tanto a função externa quanto a interna recebam parâmetros:

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

Vamos passar o parâmetro da função externa na chamada da função interna:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum); // exibirá 1
  }
  
  func(num); //!! passamos o parâmetro
}

test(1); // passamos um número como parâmetro

Isso significa que na função interna estarão disponíveis a variável num como uma variável externa da função pai e a variável localNum, que é uma variável local da função interna.

Ambas essas variáveis terão os mesmos valores:

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

test(1);

A diferença entre elas será a seguinte: se na função interna a variável num for alterada - ela mudará também na função externa:

javascriptfunction test(num) {
  function func(localNum) {
    num = 2; // alteramos a variável num
  }
  
  func(num);   // passamos o parâmetro
  console.log(num);  // exibirá 2
}

test(1); // passamos um número como parâmetro

E a variável localNum será local. Suas alterações não levarão a nenhuma mudança na função externa. E a própria variável localNum não será visível fora da função interna:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2; // alteramos a variável num
  }
  
  func(num); // passamos o parâmetro
}

test(1); // passamos um número como parâmetro
Задание 1

Determine, sem executar o código, o que será exibido no console:

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

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

Determine, sem executar o código, o que será exibido no console:

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

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

Determine, sem executar o código, o que será exibido no console:

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

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

Determine, sem executar o código, o que será exibido no console:

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

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

Determine, sem executar o código, o que será exibido no console:

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

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

Determine, sem executar o código, o que será exibido no console:

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

test(1);