Nombor dengan sifar pendahuluan dalam JavaScript ditafsirkan secara berbeza bergantung pada formatnya.
Evolusi Sejarah
Awalnya, sifar pendahuluan mewakili perlapanan (asas 8) dalam JavaScript, serupa dengan 0x pendahuluan untuk perenambelasan (asas 16).
10, 012, 0xA // 均表示十进制数 10
Walau bagaimanapun, dalam ECMAScript 3, perwakilan perlapanan ini diturunkan kepada sambungan pilihan dan literal integer perpuluhan tidak lagi boleh mempunyai sifar pendahuluan (melainkan pelaksanaan menyokong sambungan).
Mod ketat dalam ES5 dan kemudian
Dalam mod ketat dalam ES5, literal perpuluhan dengan sifar pendahuluan tidak lagi dibenarkan:
0 // 无效 NonZeroDigit DecimalDigits(opt) // 有效
ES6 Perwakilan baharu diperkenalkan
ES6 memperkenalkan literal binari dan oktal, dengan simbol terkemuka 0b dan 0o:
Tersurat perlapanan tradisional
>010 // 可能会被解释为 8 或 10,具体取决于实现
Amalan Terbaik
Untuk memastikan nombor sentiasa Ditafsirkan sebagai perpuluhan, adalah disyorkan untuk mengalih keluar sifar pendahuluan atau penggunaan parseInt menghuraikan nombor:
parseInt('010', 8) // 返回 8 parseInt('010', 10) // 返回 10
Atas ialah kandungan terperinci Bagaimanakah Sifar Utama dalam Nombor JavaScript Ditafsirkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!