Глабальныя зменныя ў функцыях у JavaScript
У JavaScript (у іншых мовах найчасцей не так) зменныя, вызначаныя звонку функцыі, будуць бачныя ўнутры гэтай функцыі. Такія зменныя называюцца глабальнымі. Паглядзім на прыкладзе:
let num = 1; // зменная звонку функцыі
function func() {
console.log(num); // зменная num бачная ўнутры функцыі
}
func(); // вывядзе 1
На самай справе зменная павінна быць вызначана не перад вызначэннем функцыі, а перад яе выклікам:
function func() {
console.log(num);
}
let num = 1; // зменная звонку функцыі
func(); // вывядзе 1
Калі мяняць значэнне зменнай і пасля гэтага кожны раз выклікаць функцыю - алерт кожны раз будзе выдаваць розны вынік:
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();