Identiske variabelnavne i funktioner i JavaScript

Lad der både udenfor funktionen og inde i den være en variabel num. I dette tilfælde vil enhver ændring af den lokale variabel num ikke have nogen indflydelse på den globale variabel num:

javascriptlet num = 1; // global variabel

function func() {
  let num = 2; // lokal variabel
  console.log(num);
}
func(); // kalder funktionen, udskriver 2

console.log(num); // udskriver 1 - den globale variabel er ikke ændret

Men hvis vi glemmer at deklarere den lokale variabel num med let, så vil der ikke blive oprettet en lokal variabel num inde i funktionen, men den globale variabel vil blive ændret:

javascriptlet num = 1;

function func() {
  num = 2; // glemte at skrive let - ændrer den eksterne variabel
  console.log(num);
}
func(); // kalder funktionen, udskriver 2

console.log(num); // udskriver 2 - variablen er ændret

Der kan være to situationer: enten havde vi virkelig til hensigt at ændre den globale variabel (så er alt okay), eller også glemte vi let og ændrede ved et uheld den globale variabel.

Den anden situation er en vanskeligt opdagelig fejl, der leder til uforudsigelig adfærd i scriptet. Derfor skal du altid, når du indfører en ny variabel, deklarere den med let.

Задание 1

Bestem, uden at køre koden, hvad der vil blive udskrevet i konsollen:

javascriptlet num = 1;

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

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

Bestem, uden at køre koden, hvad der vil blive udskrevet i konsollen:

javascriptlet num = 1;

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

console.log(num);