Глобални променливи във функции в 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();