JavaScript में लूप में क्लोज़र को प्रत्येक इटरेशन पर वेरिएबल का मान कैसे याद रखवाएं?
नमस्ते! मैंने अभी JavaScript सीखना शुरू किया है और एक समस्या का सामना किया जिसे मैं समझ नहीं पा रहा हूँ। मेरे पास एक लूप है जिसमें मैं कई बटनों के लिए event handlers बना रहा हूँ। हर बटन को क्लिक करने पर अपना नंबर दिखाना चाहिए, लेकिन इसके बजाय सभी बटन एक ही नंबर दिखाते हैं — काउंटर का आखिरी मान।
// बटन डायनामिक रूप से बनाएँ
for (var i = 0; i < 5; i++) {
var btn = document.createElement('button');
btn.textContent = 'बटन ' + i;
btn.addEventListener('click', function() {
alert('आपने बटन नंबर ' + i + ' दबाया');
});
document.body.appendChild(btn);
}
जब मैं किसी भी बटन पर क्लिक करता हूँ, तो संदेश आता है "आपने बटन नंबर 5 दबाया"। ऐसा क्यों होता है? मुझे उम्मीद थी कि हर बटन अपनी उस इटरेशन के i के मान को याद रखेगा जिसमें वह बना था।
मैंने क्लोज़र के बारे में कुछ सुना है, लेकिन समझ नहीं आता कि वे लूप में कैसे काम करते हैं। कृपया समझाएँ कि इस समस्या को सही तरीके से कैसे हल करें। उदाहरण के साथ समझाना बेहतर होगा।