Gleiche Variablennamen in Funktionen in JavaScript

Angenommen, sowohl außerhalb als auch innerhalb der Funktion gibt es eine Variable num. In diesem Fall haben jegliche Änderungen an der lokalen Variable num keinerlei Auswirkung auf die globale Variable num:

javascriptlet num = 1; // globale Variable

function func() {
  let num = 2; // lokale Variable
  console.log(num);
}
func(); // Funktion aufrufen, gibt 2 aus

console.log(num); // gibt 1 aus - globale Variable hat sich nicht geändert

Wenn wir jedoch vergessen, die lokale Variable num mit let zu deklarieren, dann wird innerhalb der Funktion keine lokale Variable num erstellt, sondern einfach die globale Variable geändert:

javascriptlet num = 1;

function func() {
  num = 2; // Vergessen, let zu schreiben - ändern die äußere Variable
  console.log(num);
}
func(); // Funktion aufrufen, gibt 2 aus

console.log(num); // gibt 2 aus - Variable hat sich geändert

Hier gibt es zwei mögliche Situationen: Entweder wollten wir tatsächlich die globale Variable ändern (dann ist alles in Ordnung), oder wir haben let vergessen und versehentlich die globale Variable geändert.

Der zweite Fall ist ein schwer auffindbarer Fehler, der zu unvorhersehbarem Verhalten des Skripts führt. Deklarieren Sie daher immer eine neue Variable mit let.

Задание 1

Bestimmen Sie, ohne den Code auszuführen, was in der Konsole ausgegeben wird:

javascriptlet num = 1;

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

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

Bestimmen Sie, ohne den Code auszuführen, was in der Konsole ausgegeben wird:

javascriptlet num = 1;

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

console.log(num);