Գլոբալ փոփոխականները ֆունկցիաներում 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();