Rumah  >  Artikel  >  hujung hadapan web  >  Mengapakah JavaScript Melayan Nombor dengan Sifar Utama sebagai Oktal?

Mengapakah JavaScript Melayan Nombor dengan Sifar Utama sebagai Oktal?

DDD
DDDasal
2024-10-31 08:31:29868semak imbas

Why Does JavaScript Treat Numbers with Leading Zeros as Octal?

Layanan JavaScript terhadap Nombor dengan Sifar Utama: Membongkar Misteri

Dalam JavaScript, nombor dengan sifar pendahuluan ditafsirkan sebagai nilai perlapanan, yang boleh membawa kepada keputusan yang tidak dijangka. Untuk memahami tingkah laku ini, mari kita mendalami sejarahnya.

Latar Belakang Sejarah

Pada mulanya, JavaScript membenarkan penghuraian literal dengan sifar pendahuluan sebagai nombor perlapanan. Walau bagaimanapun, tingkah laku ini telah ditamatkan dalam mod ketat dalam ECMAScript 5, dan ralat sintaksis kini dilemparkan. Akibatnya, JavaScript kini membezakan antara nombor perpuluhan dan perlapanan melalui penggunaan awalan tertentu:

  • Perpuluhan: Tiada sifar pendahuluan atau angka bukan sifar pendahuluan
  • Oktal: Diawali dengan 0o atau 0O (diperkenalkan dalam ECMAScript 6)

Sintaks Oktal Legasi

Walaupun penamatan penghuraian oktal dengan sifar pendahuluan dalam mod ketat, tingkah laku lama ini masih dibenarkan dalam tidak ketat mod. Ini boleh membawa kepada isu keserasian dan keputusan yang tidak dapat diramalkan.

Penyelesaian

Untuk mengelakkan tafsiran nombor dengan sifar pendahuluan sebagai perlapanan, terdapat dua pendekatan utama:

  1. Alih Keluar Sifar Utama: Hanya alih keluar sebarang sifar pendahuluan daripada literal nombor untuk memastikan ia dianggap sebagai nilai perpuluhan.
  2. Gunakan ParseInt dengan Asas Perpuluhan: Gunakan fungsi parseInt untuk menghuraikan nombor, menyatakan asas sebagai 10 (perpuluhan) untuk memastikan perpuluhan yang dijangkakan tafsiran.

Contoh

Untuk menggambarkan kesan sifar pendahuluan, pertimbangkan contoh berikut:

  • 010 dalam mod ketat melemparkan ralat.
  • 010 dalam mod tidak ketat boleh mengembalikan 8 (bergantung pada pelaksanaan).
  • 0o10 atau 0O10 dalam ECMAScript 6 mengembalikan 8.
  • parseInt('010', 8) mengembalikan 8 (melayannya sebagai oktal).
  • parseInt( '010', 10) mengembalikan 10 (melayannya sebagai perpuluhan).

Dengan mematuhi penyelesaian ini, anda boleh mengelakkan kekaburan dan memastikan nombor ditafsir secara konsisten mengikut asas yang diingini.

Atas ialah kandungan terperinci Mengapakah JavaScript Melayan Nombor dengan Sifar Utama sebagai Oktal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn