Variabler med samma namn i funktioner i JavaScript

Antag att det finns en variabel num både utanför och inuti funktionen. I detta fall kommer alla ändringar av den lokala variabeln num inte att påverka den globala variabeln num:

javascriptlet num = 1; // global variabel

function func() {
  let num = 2; // lokal variabel
  console.log(num);
}
func(); // anropar funktionen, skriver ut 2

console.log(num); // skriver ut 1 - den globala variabeln förändrades inte

Men om vi glömmer att deklarera den lokala variabeln num med let, kommer ingen lokal variabel num att skapas inuti funktionen, utan istället kommer den globala variabeln att ändras:

javascriptlet num = 1;

function func() {
  num = 2; // glömde att skriva let - ändrar den externa variabeln
  console.log(num);
}
func(); // anropar funktionen, skriver ut 2

console.log(num); // skriver ut 2 - variabeln har ändrats

Det kan finnas två situationer här: antingen vill vi verkligen ändra den globala variabeln (då är allt ok), eller så har vi glömt let och av misstag ändrat den globala variabeln.

Det andra fallet är ett svårfångat fel, som leder till oförutsägbart beteende i skriptet. Därför bör du alltid deklarera en ny variabel med let.

Задание 1

Avgör, utan att köra koden, vad som kommer att skrivas ut i konsolen:

javascriptlet num = 1;

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

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

Avgör, utan att köra koden, vad som kommer att skrivas ut i konsolen:

javascriptlet num = 1;

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

console.log(num);