Rumah >hujung hadapan web >tutorial js >Mengapakah JavaScript Melayan 0 dan -0 sebagai Sama Walaupun Perwakilan Mereka Yang Jelas?

Mengapakah JavaScript Melayan 0 dan -0 sebagai Sama Walaupun Perwakilan Mereka Yang Jelas?

Barbara Streisand
Barbara Streisandasal
2024-12-02 04:49:17674semak imbas

Why Does JavaScript Treat  0 and -0 as Equal Despite Their Distinct Representation?

Bertanya tentang Sifat 0: Adakah 0 dan -0 Sama?

Spesifikasi ECMAScript 5.1 telah mentakrifkan 0 dan -0 sebagai berbeza entiti. Ini menimbulkan persoalan: mengapa kemudian 0 === -0 kembali benar?

IEEE 754 Mendedahkan Kewujudan Sifar yang Ditandatangani

JavaScript menggunakan standard IEEE 754 untuk mewakili nombor. Piawaian ini memperkenalkan konsep "sifar yang ditandatangani," di mana kedua-dua -0 dan 0 diiktiraf. Ia merupakan variasi garis nombor nyata yang dilanjutkan, membenarkan kewujudan tafsiran yang berbeza bagi infiniti (1/−0 = −∞ dan 1/ 0 = ∞).

Perbezaan Teori, Persamaan Praktikal

Walaupun 0 dan -0 secara teorinya berbeza dalam Javascript perwakilan, Algoritma Perbandingan Kesaksamaan Ketat dalam bahagian 11.9.6 secara eksplisit mewajibkan bahawa 0 dan -0 dianggap sama untuk tujuan perbandingan. Keputusan ini dibuat untuk memudahkan pengekodan dan mengelakkan kerumitan yang tidak perlu.

A Note on Object.is

Dengan pengenalan ES2015, kaedah perbandingan baharu telah diperkenalkan: Object .ialah. Ia secara eksplisit membezakan antara -0 dan 0, seperti dalam Object.is(-0, 0); // palsu. Walau bagaimanapun, kaedah ini biasanya disyorkan hanya untuk kes tertentu di mana perbezaan antara sifar yang ditandatangani adalah penting.

Atas ialah kandungan terperinci Mengapakah JavaScript Melayan 0 dan -0 sebagai Sama Walaupun Perwakilan Mereka Yang Jelas?. 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