Dieselfde veranderlike name in funksies in JavaScript

Kom ons sê daar is 'n veranderlike num beide buite en binne die funksie. In hierdie geval sal enige veranderinge aan die plaaslike veranderlike num geen invloed hê op die globale veranderlike num nie:

javascriptlet num = 1; // globale veranderlike

function func() {
  let num = 2; // plaaslike veranderlike
  console.log(num);
}
func(); // roep die funksie, sal 2 uitvoer

console.log(num); // sal 1 uitvoer - globale veranderlike het nie verander nie

Maar, as ons vergeet om die plaaslike veranderlike num te verklaar met let, sal daar binne die funksie nie 'n plaaslike veranderlike num geskep word nie, maar sal die globale veranderlike eenvoudig verander word:

javascriptlet num = 1;

function func() {
  num = 2; // vergeet om let te skryf - verander die eksterne veranderlike
  console.log(num);
}
func(); // roep die funksie, sal 2 uitvoer

console.log(num); // sal 2 uitvoer - veranderlike het verander

Hier kan daar twee situasies wees: óf ons wou werklik die globale veranderlike verander (dan is alles in orde), óf ons het let vergeet en het per ongeluk die globale veranderlike verander.

Die tweede geval is 'n moeilik-opspoorbare fout, wat lei tot onvoorspelbare gedrag van die skrip. Verklaar daarom altyd, wanneer jy 'n nuwe veranderlike invoer, dit met let.

Задание 1

Bepaal, sonder om die kode uit te voer, wat in die konsole uitgevoer sal word:

javascriptlet num = 1;

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

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

Bepaal, sonder om die kode uit te voer, wat in die konsole uitgevoer sal word:

javascriptlet num = 1;

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

console.log(num);