Closure-ը JavaScript-ում
Ի՞նչ է Closure-ը JavaScript-ում
Closure-ը ֆունկցիա է, որը հիշում է այն փոփոխականները, որոնք սահմանվել են իր շուրջը—even եթե այդ ֆունկցիան կանչվում է ավելի ուշ։
Երբ ֆունկցիա է ստեղծվում, այն «հիշում է» այն միջավայրը, որտեղ ծնվել է։ Closure-ը հենց դա է՝ այդ հիշողությունն է։
function sayHello() {
const name = "Anna";
function greet() {
console.log("Hello, " + name);
}
return greet;
}
Ի՞նչ է տեղի ունենում այստեղ
const greeting = sayHello(); // greeting-ը հիմա նույնն է ինչ greet ֆունկցիան
greeting(); // "Hello, Anna"
Հիմա է գալիս closure-ի մոգությունը
Թեև sayHello ֆունկցիան ավարտվել է, դրա ներսի name = "Anna" արժեքը դեռ հիշվում է, որովհետև greet() ֆունկցիան closure է, և ինքը պահում է այն միջավայրը, որտեղ ստեղծվել է։
Closure-ները շատ հզոր գործիք են։ Դրանք օգնում են՝
function createCounter() {
let count = 0;
return function () {
count++;
return count;
};
}
const counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3
Այստեղ count փոփոխականը դրսից հասանելի չէ, բայց closure-ի օգնությամբ inner function-ը կարողանում է նրան տեսնել և փոփոխել։
function delayedMessage() {
const message = "This is a closure!";
setTimeout(function () {
console.log(message); // closure պահել է message-ը
}, 2000);
}
delayedMessage();
Closure-ը ֆունկցիա է, որը հիշում է իր շուրջի փոփոխականները, նույնիսկ այն բանից հետո, երբ այդ փոփոխականները սահմանված ֆունկցիան ավարտվել է։