Rumah >hujung hadapan web >tutorial js >Mengapakah `040` Sama dengan 32 dalam JavaScript?

Mengapakah `040` Sama dengan 32 dalam JavaScript?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-26 09:01:11439semak imbas

Why Does `040` Equal 32 in JavaScript?

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!

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