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

Mengapakah `040` Sama dengan 32 dalam JavaScript?

Mary-Kate Olsen
Lepaskan: 2024-11-26 09:01:11
asal
408 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan