Neden değiştiğiyle ilgili doğrudan soruyu cevaplamak için, hata Chrome tarafından kullanılan V8 JS motorunun "JIT" optimizasyon rutinindedir. İlk başta, kod tam olarak yazıldığı gibi çalıştırılır, ancak onu ne kadar çok çalıştırırsanız, optimizasyonun faydalarının analiz maliyetlerinden daha fazla olma potansiyeli o kadar artar.
Bu durumda, döngüde tekrarlanan yürütmeden sonra, JIT derleyicisi işlevi analiz eder ve onu optimize edilmiş bir sürümle değiştirir. Ne yazık ki, analiz yanlış bir varsayımda bulunuyor ve optimize edilmiş sürüm aslında doğru sonucu üretmiyor.
Özellikle Reddit kullanıcısı RainHappens, bunun tür yayılmasında bir hata olduğunu öne sürüyor :
Aynı zamanda bir tür yayılımı da yapar (bir değişkenin hangi türlerde olabileceği gibi). Bir değişkenin tanımsız veya boş olduğu durumlar için özel bir "saptanamayan" tür vardır. Bu durumda, optimize edici "null tespit edilemez, bu nedenle karşılaştırma için" tanımsız "dizesi ile değiştirilebilir.
Bu, kodu optimize etmenin en zor sorunlarından biridir: performans için yeniden düzenlenen kodun orijinaliyle aynı etkiye sahip olacağı nasıl garanti edilir.