Пусть и снаружи функции, и внутри есть переменная
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);