Глобалне променљиве у функцијама у JavaScript-у
У JavaScript-у (у другим језицима то најчешће није случај) променљиве дефинисане изван функције биће видљиве унутар те функције. Такве променљиве се називају глобалним. Погледајмо на примеру:
let num = 1; // променљива изван функције
function func() {
console.log(num); // променљива num је видљива унутар функције
}
func(); // исписаће 1
Заправо, променљива мора бити дефинисана не пре дефиниције функције, већ пре њеног позива:
function func() {
console.log(num);
}
let num = 1; // променљива изван функције
func(); // исписаће 1
Ако мењамо вредност променљиве и после тога
сваки пут позивамо функцију - console.log ће сваки
пут исписивати различите резултате:
function func() {
console.log(num);
}
let num; // декларишемо променљиву
num = 1; // постављамо вредност 1
func(); // исписаће 1
num = 2; // постављамо вредност 2
func(); // исписаће 2
Ако имамо више функција, онда ће глобална променљива бити доступна у свакој од тих функција:
function func1() {
console.log(num);
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // исписаће 1
func2(); // исписаће 1
Ако у једној од функција дође до промена глобалне променљиве, онда ће се та променљива променити у свим функцијама које користе ту променљиву:
function func1() {
console.log(num);
num++; // мењамо глобалну променљиву
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // исписаће 1
func2(); // исписаће 2
Пошто било која функција лако може променити глобалну променљиву, њихова употреба представља легло тешко уочљивих грешака. Због тога коришћење глобалних променљивих у скрипти треба свести на минимум. Пожељно је да их уопште нема или да их има што мањи број.
Одредите, без покретања кода, шта ће се исписати у конзолу:
let num = 1;
function func() {
console.log(num);
}
func();
Одредите, без покретања кода, шта ће се исписати у конзолу:
let num = 1;
function func() {
console.log(num);
}
num = 2;
func();
Одредите, без покретања кода, шта ће се исписати у конзолу:
function func() {
console.log(num);
}
let num;
num = 1;
func();
num = 2;
func();