Samannimiset muuttujat funktioissa JavaScriptissä

Olkoon sekä funktion ulkopuolella että sisällä muuttuja num. Tässä tapauksessa minkä tahansa muutokset paikalliseen muuttujaan num eivät vaikuta millään tavalla globaaliin muuttujaan num:

javascriptlet num = 1; // globaali muuttuja

function func() {
  let num = 2; // paikallinen muuttuja
  console.log(num);
}
func(); // kutsutaan funktiota, tulostaa 2

console.log(num); // tulostaa 1 - globaali muuttuja ei muuttunut

Mutta jos unohdamme esitellä paikallisen muuttujan num avulla let, funktion sisälle ei synny paikallista muuttujaa num, vaan muuttuu vain globaali muuttuja:

javascriptlet num = 1;

function func() {
  num = 2; // unohdettiin kirjoittaa let - muutetaan ulkoista muuttujaa
  console.log(num);
}
func(); // kutsutaan funktiota, tulostaa 2

console.log(num); // tulostaa 2 - muuttuja muuttui

Tässä voi olla kaksi tilannetta: joko me todella halusimme muuttaa globaalia muuttujaa (silloin kaikki on kunnossa), tai unohdimme let ja vahingossa muutimme globaalin muuttujan.

Jälkimmäinen tapaus on vaikeasti havaittava virhe, joka johtaa skriptin arvaamattomaan käyttäytymiseen. Sen vuoksi aina, kun otat käyttöön uuden muuttujan, esittele se aina let:llä.

Задание 1

Päätä, käyttämättä koodia, mitä tulostetaan konsoliin:

javascriptlet num = 1;

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

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

Päätä, käyttämättä koodia, mitä tulostetaan konsoliin:

javascriptlet num = 1;

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

console.log(num);