यह क्यों बदलता है के प्रत्यक्ष प्रश्न का उत्तर देने के लिए, बग क्रोम द्वारा उपयोग किए जाने वाले V8 JS इंजन के "JIT" अनुकूलन दिनचर्या में है। सबसे पहले, कोड बिल्कुल लिखित रूप में चलाया जाता है, लेकिन जितना अधिक आप इसे चलाते हैं, उतना ही अधिक विश्लेषण की लागतों को पछाड़ने के लिए अनुकूलन के लाभों के लिए है।
इस मामले में, लूप में बार-बार निष्पादन के बाद, जेआईटी कंपाइलर फ़ंक्शन का विश्लेषण करता है, और इसे एक अनुकूलित संस्करण के साथ बदलता है। दुर्भाग्य से, विश्लेषण एक गलत धारणा बनाता है, और अनुकूलित संस्करण वास्तव में सही परिणाम नहीं देता है।
विशेष रूप से, Reddit उपयोगकर्ता RainHappens सुझाव देता है कि यह टाइप प्रचार में एक त्रुटि है :
यह कुछ प्रकार का प्रचार भी करता है (जैसे कि चर आदि किस प्रकार के हो सकते हैं)। एक चर अपरिभाषित या अशक्त होने पर एक विशेष "undetectable" प्रकार होता है। इस मामले में ऑप्टिमाइज़र जाता है "अशक्त undetectable है, इसलिए इसे तुलना के लिए" अपरिभाषित "स्ट्रिंग से बदला जा सकता है।
यह अनुकूलन कोड के साथ कठिन समस्याओं में से एक है: प्रदर्शन के लिए पुनर्व्यवस्थित किए गए उस कोड की गारंटी कैसे करें, मूल के रूप में अभी भी वही प्रभाव होगा।