Еднакви имена на променливи във функции в JavaScript
Нека и извън функцията, и вътре в нея има променлива
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);