Иста имена променљивих у функцијама у ЈаваСкрипту
Нека и изван функције, и унутар ње постоји променљива
num. У овом случају, било какве промене
локалне променљиве num никако не
утичу на глобалну променљиву num:
let num = 1; // глобална променљива
function func() {
let num = 2; // локална променљива
console.log(num);
}
func(); // позивамо функцију, исписаће 2
console.log(num); // исписаће 1 - глобална променљива се није променила
Али, ако заборавимо да декларишемо локалну променљиву
num преко let, онда се унутар функције
неће створити локална променљива num,
већ ће се једноставно променити глобална променљива:
let num = 1;
function func() {
num = 2; // заборавили смо да напишемо let - мењамо спољну променљиву
console.log(num);
}
func(); // позивамо функцију, исписаће 2
console.log(num); // исписаће 2 - променљива се променила
Овде могу постојати две ситуације: или смо заиста
желели да променимо глобалну променљиву (тада је
све у реду), или смо заборавили let и случајно
смо променили глобалну променљиву.
Други случај представља тешко уочљиву грешку,
која води до непредвидивог понашања скрипте.
Зато увек, када уводите нову променљиву, декларишите је
преко let.
Одредите, без покретања кода, шта ће се исписати у конзолу:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Одредите, без покретања кода, шта ће се исписати у конзолу:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);