Аднолькавыя імёны зменных у функцыях у 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);