Medium
JavaScript Hover Time Tracking Bug: Single startTime Variable Causes Race Conditions
A startup is building a user engagement tracking system. When users hover over different UI elements, you need to track the total time they spend on each element. What's wrong with this implementation?
1function createHoverTracker() {2 let hoverTimes = {};3 let startTime;45 return {6 startTracking(elementId) {7 startTime = Date.now();8 },910 stopTracking(elementId) {11 const duration = Date.now() - startTime;12 hoverTimes[elementId] = (hoverTimes[elementId] || 0) + duration;13 },1415 getTotalHoverTime(elementId) {16 return hoverTimes[elementId] || 0;17 }18 };19}2021const tracker = createHoverTracker();