Nomes iguais de variáveis em funções em JavaScript

Suponha que exista uma variável num tanto fora quanto dentro da função. Neste caso, quaisquer alterações na variável local num não afetam de forma alguma a variável global num:

javascriptlet num = 1; // variável global

function func() {
  let num = 2; // variável local
  console.log(num);
}
func(); // chamamos a função, exibirá 2

console.log(num); // exibirá 1 - a variável global não mudou

Mas, se esquecermos de declarar a variável local num usando let, então dentro da função não será criada uma variável local num, e sim a variável global será alterada:

javascriptlet num = 1;

function func() {
  num = 2; // esquecemos de escrever let - alterando a variável externa
  console.log(num);
}
func(); // chamamos a função, exibirá 2

console.log(num); // exibirá 2 - a variável mudou

Pode haver duas situações: ou nós realmente queríamos alterar a variável global (então está tudo bem), ou esquecemos o let e acidentalmente alteramos a variável global.

O segundo caso é um erro difícil de detectar, que leva a um comportamento imprevisível do script. Portanto, sempre declare novas variáveis usando let.

Задание 1

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

javascriptlet num = 1;

function func() {
  num = 2;
}
func();

console.log(num);
Задание 2

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

javascriptlet num = 1;

function func() {
  let num = 2;
}
func();

console.log(num);