Ֆունկցիաների մուտքը արտաքին փոփոխականներին JavaScript-ում
Դիտարկենք հետևյալ կոդը.
let num = 1; // սահմանում ենք փոփոխականի արժեքը
function func() {
console.log(num); // այն արտածում ենք կոնսոլում
}
func(); // կանչում ենք ֆունկցիան
Ինչպես նախկինում նշել էի, փոփոխականի արժեքը պարտադիր չէ, որ լինի ֆունկցիայի սահմանումից առաջ, գլխավորն այն է, որ այն լինի դրա կանչից առաջ.
function func() {
console.log(num);
}
let num = 1;
func();
Իրականում դա ամբողջությամբ ճիշտ չէ։ Մեր ֆունկցիան
նույնիսկ իր կանչից առաջ գիտի փոփոխականի արժեքը
num.
let num = 1;
function func() {
console.log(num); // ֆունկցիան արդեն գիտի, որ num = 1
}
Ահա ավելի բարդ օրինակ.
let num = 1; // ֆունկցիան այս պահին իմանում է, որ num = 1
function func() {
console.log(num);
}
num = 2; // ֆունկցիան այս պահին իմանում է, որ num = 2
Ավելացնենք ֆունկցիայի կանչեր.
let num = 1; // ֆունկցիան այս պահին իմանում է, որ num = 1
func(); // կարտածի 1
function func() {
console.log(num);
}
func(); // կարտածի 1
num = 2; // ֆունկցիան այս պահին իմանում է, որ num = 2
func(); // կարտածի 2
Եվս մեկ անգամ. իրականում ֆունկցիան գիտի արտաքին փոփոխականների արժեքները, նույնիսկ առանց կանչվելու։