Untuk menjawab pertanyaan langsung mengapa itu berubah, bug tersebut ada dalam rutinitas pengoptimalan "JIT" dari mesin V8 JS yang digunakan oleh Chrome. Pada awalnya, kode dijalankan persis seperti yang tertulis, tetapi semakin sering Anda menjalankannya, semakin besar potensi manfaat pengoptimalan yang melebihi biaya analisis.
Dalam kasus ini, setelah eksekusi berulang dalam loop, kompilator JIT menganalisis fungsi tersebut, dan menggantinya dengan versi yang dioptimalkan. Sayangnya, analisis membuat asumsi yang salah, dan versi yang dioptimalkan sebenarnya tidak memberikan hasil yang benar.
Secara khusus, pengguna Reddit RainHappens menyarankan bahwa ini adalah kesalahan dalam jenis propagasi :
Itu juga melakukan beberapa jenis propagasi (seperti dalam tipe apa variabel dll). Ada tipe khusus "tidak terdeteksi" ketika variabel tidak terdefinisi atau null. Dalam hal ini pengoptimal mengatakan "null tidak terdeteksi, sehingga dapat diganti dengan string" tidak ditentukan "untuk perbandingan.
Ini adalah salah satu masalah sulit dengan pengoptimalan kode: bagaimana menjamin bahwa kode yang telah diatur ulang untuk kinerja akan tetap memiliki efek yang sama seperti aslinya.