Panggilan ke parseIntharus selalu menentukan basis dalam argumen kedua:
parseInt("08", 10);
Versi JavaScript sebelumnya memperlakukan string yang dimulai dengan 0oktal (bila tidak ada basis yang ditentukan) dan tidak 08juga09 bilangan oktal yang valid.
Dari dokumentasi Mozilla :
Jika radix tidak ditentukan atau 0, JavaScript mengasumsikan yang berikut:
- Jika string input dimulai dengan "0x" atau "0X", radix adalah 16 (heksadesimal).
- Jika string input dimulai dengan "0", radix adalah delapan (oktal). Fitur ini tidak standar, dan beberapa implementasi sengaja tidak mendukungnya (alih-alih menggunakan radix 10). Untuk alasan ini, selalu tentukan radix saat menggunakan parseInt .
- Jika string input dimulai dengan nilai lain, radix-nya adalah 10 (desimal).
Jika karakter pertama tidak dapat diubah menjadi angka, parseInt mengembalikan NaN.
Dan dari standar ECMAScript 3 :
Ketika radix adalah 0 atau tidak terdefinisi dan nomor string dimulai dengan
digit 0 tidak diikuti oleh x atau X , maka implementasi dapat, atas kebijakannya sendiri, menafsirkan bilangan tersebut sebagai oktal atau sebagai desimal. Penerapan didorong untuk menafsirkan angka dalam kasus ini sebagai desimal.
Versi terbaru JavaScript ( ECMAScript 5 ) mengabaikan perilaku ini , tetapi Anda masih harus menentukan radix untuk memenuhi browser lama.