Variables globales en funciones en JavaScript

En JavaScript (en otros lenguajes generalmente no es así) las variables definidas fuera de una función, serán visibles dentro de esa función. Estas variables se llaman globales. Veamos un ejemplo:

javascriptlet num = 1; // variable fuera de la función

function func() {
  console.log(num); // la variable num es visible dentro de la función
}

func(); // mostrará 1

En realidad, la variable debe estar definida no antes de la definición de la función, sino antes de su llamada:

javascriptfunction func() {
  console.log(num);
}

let num = 1; // variable fuera de la función
func();      // mostrará 1

Si cambiamos el valor de la variable y después de eso cada vez llamamos a la función - console.log cada vez mostrará resultados diferentes:

javascriptfunction func() {
  console.log(num);
}

let num; // declaramos la variable

num = 1; // establecemos el valor 1
func();  // mostrará 1

num = 2; // establecemos el valor 2
func();  // mostrará 2

Si tenemos varias funciones, entonces la variable global estará disponible en cada una de estas funciones:

javascriptfunction func1() {
  console.log(num);
}

function func2() {
  console.log(num);
}

let num = 1;

func1(); // mostrará 1
func2(); // mostrará 1

Si en una de las funciones ocurren cambios con la variable global, entonces esta variable cambiará en todas las funciones que utilicen esta variable:

javascriptfunction func1() {
  console.log(num);
  num++; // cambiamos la variable global
}

function func2() {
  console.log(num);
}

let num = 1;

func1(); // mostrará 1
func2(); // mostrará 2

Ya que cualquiera de las funciones fácilmente puede cambiar la variable global, su uso representa un foco de errores difíciles de detectar. Por esta razón, el uso de variables globales en el script debe reducirse al mínimo. Es deseable que no existan en absoluto o que haya la cantidad mínima posible.

Задание 1

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

javascriptlet num = 1;
    
function func() {
  console.log(num);
}

func();
Задание 2

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

javascriptlet num = 1;
    
function func() {
  console.log(num);
}

num = 2;
func();
Задание 3

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

javascriptfunction func() {
  console.log(num);
}

let num;

num = 1;
func();

num = 2;
func();