-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
48 lines (40 loc) · 1.23 KB
/
script.js
File metadata and controls
48 lines (40 loc) · 1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Counter closure using IIFE (Immediately Invoked Function Expression)
const counter = (function() {
// Private variable (function scope)
let count = 0;
const displayElement = document.getElementById('counter');
// Private function to update UI
function updateDisplay() {
//Preserves the count variable between function calls
displayElement.textContent = count;
}
// Private function for validation to ensure count stays within bounds (-100 to 100)
function validateCount(newCount) {
return Math.max(-100, Math.min(100, newCount));
}
// Return object
return {
increment() {
count = validateCount(count + 1);
updateDisplay();
},
decrement() {
count = validateCount(count - 1);
updateDisplay();
},
reset() {
count = 0;
updateDisplay();
}
};
})();
// Event listeners
document.getElementById('increment').addEventListener('click', () => {
counter.increment();
});
document.getElementById('decrement').addEventListener('click', () => {
counter.decrement();
});
document.getElementById('reset').addEventListener('click', () => {
counter.reset();
});