Аднолькавыя імёны зменных у функцыях у JavaScript

Хай і звонку функцыі, і ўнутры ёсць зменная num. У гэтым выпадку любыя змены з лакальнай зменнай num ніяк не ўплываюць на глабальную зменную num:

javascriptlet num = 1; // глабальная зменная

function func() {
  let num = 2; // лакальная зменная
  console.log(num);
}
func(); // выклікаем функцыю, выведзе 2

console.log(num); // выведзе 1 - глабальная зменная не змянілася

Але, калі мы забудзем аб'явіць лакальную зменную num праз let, то ўнутры функцыі не стварыцца лакальная зменная num, а проста зменіцца глабальная зменная:

javascriptlet num = 1;

function func() {
  num = 2; // забылі напісаць let - мяняем вонкавую зменную
  console.log(num);
}
func(); // выклікаем функцыю, выведзе 2

console.log(num); // выведзе 2 - зменная змянілася

Тут можа быць дзве сітуацыі: або мы сапраўды хацелі змяніць глабальную зменную (тады ўсё ок), або мы забылі let і выпадкова змянілі глабальную зменную.

Другі выпадак з'яўляецца цяжкаўлоўнай памылкай, якая вядзе да непрадказальнай паводзін скрыпта. Таму заўсёды, уводзячы новую зменную аб'яўляйце яе праз let.

Задание 1

Вызначыце, не запускаючы код, што выведзецца ў кансоль:

javascriptlet num = 1;

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

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

Вызначыте, не запускаючы код, што выведзецца ў кансоль:

javascriptlet num = 1;

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

console.log(num);