Nombres iguales de variables en funciones en JavaScript

Supongamos que tanto fuera como dentro de la función existe una variable num. En este caso, cualquier cambio en la variable local num no afecta de ninguna manera a la variable global num:

javascriptlet num = 1; // variable global

function func() {
  let num = 2; // variable local
  console.log(num);
}
func(); // llamamos a la función, mostrará 2

console.log(num); // mostrará 1 - la variable global no cambió

Pero, si olvidamos declarar la variable local num mediante let, entonces dentro de la función no se creará la variable local num, sino que simplemente se cambiará la variable global:

javascriptlet num = 1;

function func() {
  num = 2; // olvidamos escribir let - cambiamos la variable externa
  console.log(num);
}
func(); // llamamos a la función, mostrará 2

console.log(num); // mostrará 2 - la variable cambió

Aquí pueden darse dos situaciones: o realmente queríamos cambiar la variable global (entonces todo está bien), o olvidamos let y accidentalmente cambiamos la variable global.

El segundo caso es un error difícil de detectar, que conduce a un comportamiento impredecible del script. Por lo tanto, siempre, al introducir una nueva variable, declárela mediante let.

Задание 1

Determine, sin ejecutar el código, qué se mostrará en la consola:

javascriptlet num = 1;

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

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

Determine, sin ejecutar el código, qué se mostrará en la consola:

javascriptlet num = 1;

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

console.log(num);