Rumah > hujung hadapan web > tutorial js > JavaScript NaN Quirks: Ciri, Bukan Cacat.

JavaScript NaN Quirks: Ciri, Bukan Cacat.

Linda Hamilton
Lepaskan: 2025-01-27 18:32:10
asal
829 orang telah melayarinya

JavaScript NaN Quirks: Features, Not Flaws.

NaN (Not-a-Number) dalam JavaScript sering mengelirukan pembangun. Tetapi sebenarnya, NaN bukanlah outlier mudah, tetapi nilai sentinel , mewakili nombor tidak sah. Ia bukan nombor yang hilang, mahupun sifar, tetapi isyarat yang jelas bahawa ada kesilapan dalam operasi berangka. (Atau, saya tidak tahu, saya bukan orang yang mencipta bahasa itu)

Apakah itu NaN?

NaN berasal daripada spesifikasi IEEE 754 , yang mentakrifkan cara nombor berfungsi dalam JavaScript. Ia bukan pepijat atau pepijat, ia adalah bahagian bahasa yang disengajakan. Fikirkan NaN sebagai bendera merah yang mengatakan "hei, operasi ini tidak masuk akal matematik".

Contohnya:

<code class="language-javascript">console.log(Math.sqrt(-1)); // NaN</code>
Salin selepas log masuk

Anda tidak boleh mengira punca kuasa dua nombor negatif (sekurang-kurangnya dalam julat sebenar), jadi JavaScript mengembalikan NaN. Ia seperti bertanya "Apakah warna kebahagiaan?" - ia adalah soalan tanpa jawapan yang bermakna.

Gelagat pelik NaN

Apa yang menjadi pelik ialah NaN ialah satu-satunya nombor dalam JavaScript yang tidak sama dengan dirinya :

<code class="language-javascript">console.log(NaN === NaN); // false</code>
Salin selepas log masuk

Ini bukan pepijat, tetapi mengikut reka bentuk. Menurut spesifikasi ECMAScript, NaN adalah "tidak tersusun" berbanding dengan nilai lain, termasuk nilainya sendiri. Ini bermakna anda tidak boleh menggunakan === untuk menyemak NaN. Anda perlu menggunakan Number.isNaN():

<code class="language-javascript">console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN("Hello")); // false</code>
Salin selepas log masuk

Mengapa NaN ialah nombor

Anehnya, NaN secara teknikal tergolong dalam jenis nombor. Ya, anda membacanya dengan betul. Hasil daripada typeof NaN ialah "nombor". Ini kerana NaN adalah sebahagian daripada spesifikasi IEEE 754, yang mentakrifkan operasi berangka. Apabila operasi berangka gagal, tidak masuk akal untuk mengembalikan undefined, null atau -1 - tiada satu pun daripadanya adalah nombor. Sebaliknya, JavaScript mengembalikan NaN, yang masih merupakan nombor, hanya nombor yang tidak sah.

Contoh

Andaikan anda sedang membina fungsi untuk mengira purata tatasusunan nombor. Apakah yang berlaku jika tatasusunan mengandungi nilai bukan angka?

<code class="language-javascript">function calculateAverage(arr) {
  const sum = arr.reduce((acc, val) => acc + val, 0);
  return sum / arr.length;
}

console.log(calculateAverage([1, 2, "three", 4])); // NaN</code>
Salin selepas log masuk

Di sini, rentetan "tiga" tidak boleh ditambah kepada jumlah, jadi hasilnya ialah NaN. Ini adalah contoh yang bagus tentang cara NaN boleh menyelinap ke dalam kod anda dan menyebabkan tingkah laku yang tidak dijangka.


Walaupun terdapat keanehan ini, NaN masih merupakan alat yang berkuasa. Ia satu-satunya nilai pulangan yang bermakna apabila operasi berangka gagal, dan kita perlu belajar cara menggunakan bahasa tersebut.

NaN ialah konsep unik dan penting dalam JavaScript. Ia bukan sekadar nilai, ia adalah isyarat bahawa ada sesuatu yang salah dengan pengiraan anda.

Atas ialah kandungan terperinci JavaScript NaN Quirks: Ciri, Bukan Cacat.. 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