Gelagat pelik JavaScript di mana NaN === NaN
menilai untuk false
sering membingungkan pembangun. Artikel ini menjelaskan mengapa ini berlaku dan menawarkan kaedah yang betul untuk pengesanan NaN.
Memahami NaN
NaN, singkatan untuk "Not-a-Number," menandakan hasil operasi matematik yang tidak sah atau tidak ditentukan. Contohnya termasuk:
<code class="language-javascript">console.log(0 / 0); // NaN console.log(Math.sqrt(-1)); // NaN</code>
Mengapa Ketaksamaan?
Piawaian IEEE 754 untuk aritmetik titik terapung menentukan bahawa NaN tidak sama dengan apa-apa, termasuk dirinya sendiri. Reka bentuk ini menghalang rawatan yang salah terhadap hasil yang tidak sah seolah-olah ia adalah nilai berangka yang sah. Pada asasnya, NaN membenderakan keadaan ralat dan sememangnya tidak dapat dibandingkan.
Semakan NaN yang Boleh Dipercayai
Perbandingan langsung gagal apabila berurusan dengan NaN. Sebaliknya, gunakan fungsi ini:
isNaN()
: Fungsi global ini menyemak sama ada nilai ialah NaN atau boleh dipaksa masuk ke NaN:<code class="language-javascript">console.log(isNaN("abc")); // true</code>
Number.isNaN()
: Kaedah ini menyediakan semakan yang lebih tepat untuk NaN, mengelakkan paksaan jenis:<code class="language-javascript">console.log(Number.isNaN(NaN)); // true</code>
Ringkasnya
Perbandingan NaN === NaN
menghasilkan false
kerana NaN mewakili keadaan ralat, bukan nilai berangka. Untuk mengesan NaN dengan tepat, gunakan isNaN()
atau Number.isNaN()
untuk kod yang mantap dan boleh dipercayai.
Sumber
Atas ialah kandungan terperinci Mengapa nan === nan kembali palsu di JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!