Nombor dengan Sifar Utama dalam JavaScript: Mentafsir Misteri
Bayangkan menemui kod berikut dalam JavaScript:
var num = 040; console.log(num); // 32
Bingung, anda mungkin tertanya-tanya bagaimana 40 sama dengan 32. Jawapannya terletak pada kepentingan peneraju sifar.
Dalam versi awal JavaScript, sifar pendahuluan dalam literal berangka menandakan nombor perlapanan (asas 8), serupa dengan pendahuluan 0x untuk perenambelasan. Oleh itu, "040" ditafsirkan sebagai 4x8^1 0x8^0 = 32.
Walau bagaimanapun, amalan ini terbukti mengelirukan dan telah diturunkan taraf kepada sambungan pilihan dalam ECMAScript 3. JavaScript moden menguatkuasakan mod yang ketat, yang mendahului sifar dalam literal perpuluhan adalah dilarang untuk ketekalan.
ECMAScript 6 memperkenalkan cara baharu untuk mewakili nombor perlapanan dan perduaan menggunakan awalan 0o dan 0b, masing-masing. Format oktal warisan menggunakan sifar pendahuluan (010) menjadi ralat sintaks dalam mod ketat.
Oleh itu, kod di atas kini akan mengembalikan ralat sintaks dalam mod ketat. Jika seseorang ingin menghuraikan nombor dalam asas 8, mereka boleh menggunakan awalan 0o yang disyorkan atau menggunakan parseInt seperti berikut:
parseInt('010', 8); // Returns 8
Untuk memastikan nombor perpuluhan dihuraikan dengan betul, alih keluar sifar pendahuluan atau gunakan parseInt.
Ringkasnya, memahami kepentingan sejarah sifar terkemuka dalam literal angka JavaScript adalah penting untuk memahami kelakuannya dan mentafsir kod dengan betul.
Atas ialah kandungan terperinci Mengapakah `040` Sama dengan 32 dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!