mata utama
- Semua nombor dalam JavaScript diwakili menggunakan jenis data nombor, termasuk bilangan bulat, nombor sebenar, nombor heksadesimal, dan nombor notasi saintifik. Walau bagaimanapun, JavaScript secara dalaman mewakili semua nombor sebagai nombor titik terapung IEEE 754, yang bermaksud bahawa matematik JavaScript tidak 100% tepat.
- JavaScript mentakrifkan nombor yang dipanggil Not-A-Number (NAN) untuk mewakili bukan digit sebagai nombor. NAN adalah satu -satunya nilai angka dalam JavaScript yang tidak sama dengan dirinya sendiri, dan boleh diuji menggunakan fungsi ISNAN ().
- JavaScript mempunyai beberapa ciri, seperti sifar yang ditandatangani, menghasilkan sifar positif (0) dan sifar negatif (-0), yang dianggap nilai yang berbeza, tetapi pengendali perbandingan JavaScript tidak dapat membezakannya. Dalam JavaScript, membahagikan dengan sifar menghasilkan tak terhingga, dan membahagikan oleh sifar negatif menghasilkan -infinity.
- Jenis data adalah bahagian penting dari setiap bahasa pengaturcaraan, dan nombor mungkin jenis data yang paling penting. Lagipun, komputer benar -benar hanya kalkulator mahal. Seperti mana -mana bahasa pengaturcaraan yang berharga, JavaScript menyokong data berangka. Tetapi, seperti banyak aspek lain dari JavaScript, terdapat beberapa nuansa dalam nombor yang boleh menyebabkan anda masalah jika anda tidak berhati -hati. Artikel ini membincangkan data berangka dan beberapa ciri -cirinya.
.
Jenis nomborDalam JavaScript, semua nombor diwakili oleh jenis data nombor. Ini termasuk bilangan bulat, nombor sebenar, nombor heksadesimal dan nombor yang diwakili oleh notasi saintifik. Contoh berikut mengesahkan ini dengan menggunakan pengendali jenis ke pelbagai nombor. Dalam contoh ini, setiap aplikasi TypeOf mengembalikan nombor.
Dalam contoh terdahulu, nombor dalam pelbagai format. Walau bagaimanapun, secara dalaman, semua nombor JavaScript sebenarnya diwakili sebagai nombor titik terapung IEEE 754. Ini penting kerana ia bermakna bahawa JavaScript tidak mempunyai konsep integer, walaupun bahasa mempunyai fungsi parseInt (). Ini juga bermakna bahawa operasi matematik JavaScript tidak 100% tepat. Sebagai contoh, pertimbangkan ungkapan berikut.
typeof(100); typeof(3.14); typeof(0xDEADBEEF); typeof(7.89e2);
Jika anda tidak biasa dengan nombor titik terapung, anda pasti akan mengharapkan ungkapan ini untuk menilai benar. Lagipun, 0.1 0.2 sama dengan 0.3. Walau bagaimanapun, disebabkan bagaimana nombor titik terapung berfungsi, jumlahnya sebenarnya 0.300000000000000000000000004. Perbezaannya kecil, tetapi ini cukup untuk menyebabkan keseluruhan ekspresi menilai palsu.
(0.1 + 0.2) === 0.3
sifar positif dan sifar negatif
Satu lagi ciri standard IEEE 754 ialah sifar yang ditandatangani. Ini menghasilkan dua sifar - sifar positif, 0, dan sifar negatif, -0. Ini mungkin kelihatan pelik, tetapi keseronokan baru sahaja bermula. Jelas sekali, kedua -dua ini adalah nilai yang berbeza, jika tidak, hanya satu sifar. Walau bagaimanapun, jika anda menunjukkan salah satu daripada kedua -dua sifar ini, simbol akan dipadamkan. Sebagai contoh, kod berikut cuba memaparkan kedua -dua nilai sifar ini bersebelahan.
typeof(100); typeof(3.14); typeof(0xDEADBEEF); typeof(7.89e2);
lebih teruk, pengendali perbandingan JavaScript juga nampaknya tidak dapat membezakan antara kedua -dua nilai, seperti yang ditunjukkan dalam contoh berikut.
(0.1 + 0.2) === 0.3
Terdapat penyelesaian yang agak mudah untuk masalah ini. Dalam JavaScript, pembahagian dengan sifar menghasilkan tak terhingga. Begitu juga, membahagikan dengan sifar negatif akan menghasilkan -infinity. Oleh itu, untuk menentukan sama ada nombor adalah sama dengan -0, kita perlu menyemak sama ada sifar, kemudian gunakannya sebagai penyebut untuk pembahagian dan periksa -infiniti seperti yang ditunjukkan di bawah.
alert((+0) + " " + (-0)); // 显示 0 0
not-a-number (nan)
JavaScript sebenarnya mentakrifkan nombor yang dipanggil Not-A-Number (NAN). NAN adalah nilai palsu yang digunakan untuk mewakili nombor sebagai nombor. Nilai ini menarik kerana namanya sendiri mengetepikan kemungkinan bahawa ia adalah nombor, tetapi Typeof (NAN) adalah nombor. NAN juga menarik kerana ia adalah satu -satunya nilai dalam JavaScript yang tidak sama. Sebagai contoh, kod berikut akan kembali palsu.
alert((+0 === -0)); // 显示 true alert((-0 === +0)); // 显示 true
Anda boleh menguji NAN menggunakan fungsi ISNAN () dan bukannya menggunakan pengendali perbandingan seperti yang ditunjukkan di bawah.
function isNegativeZero(x) { return (x === 0 && (1/x) === -Infinity); }Walau bagaimanapun, isnan () juga menarik kerana ia boleh mengelirukan. Jika anda lulus dalam nilai yang boleh dibuang ke nombor, Isnan () akan kembali palsu. Dalam contoh berikut, Isnan () dipanggil dengan beberapa nilai yang jelas tidak angka. Walau bagaimanapun, setiap panggilan kembali palsu.
alert((NaN === NaN)); // 显示 falseCara yang lebih baik untuk memeriksa NAN adalah untuk memanfaatkan hakikat bahawa ia tidak sama. Ujian fungsi berikut nan menggunakan ketidaksamaan yang ketat. Fungsi ini mengembalikan hanya untuk nilai nan.
isNaN(1); // 返回 false isNaN(NaN); // 返回 true
Momen -momen yang menyeronokkan lain
Terdapat beberapa situasi lain yang boleh menyebabkan masalah dengan nombor. Pertama, anda harus menyedari pelayar lama, yang membolehkan sifat global seperti Infinity, Nan, dan Undefined untuk ditakrifkan semula sebagai nilai baru. Sebagai contoh, jika anda menggunakan NAN dengan kerap, kod berikut boleh menyebabkan banyak masalah. Nasib baik, pelayar moden mengabaikan tugasan kepada sifat -sifat yang disebutkan di atas. Mod yang ketat melangkah lebih jauh, menukar kegagalan senyap ini ke dalam kesilapan.
isNaN(true); isNaN(false); isNaN(""); isNaN(null); // 全部返回 falseSatu lagi kesilapan diagnostik yang menarik datang dari menambah nombor dan rentetan. Contohnya ditunjukkan di bawah. Dalam kes ini, concatenation rentetan mengatasi penambahan. Ini menyebabkan Foo ditukar kepada rentetan "100". Hasil akhirnya adalah rentetan "1001", yang sangat berbeza dari nilai yang diharapkan dari 101. Kesalahan jenis ini lebih biasa daripada yang anda fikirkan dan sering berlaku apabila membaca input pengguna.
function isNotANumber(x) { return x !== x; }
Kesimpulan
Artikel ini membincangkan beberapa ciri nombor dalam JavaScript. Mudah -mudahan anda sekarang memahami bagaimana masalah ini timbul dan bagaimana untuk mengelakkannya. Dan, sementara anda mungkin tidak sering menghadapi situasi seperti sifar negatif, sekurang -kurangnya sekarang anda sudah bersedia.
soalan yang sering ditanya mengenai nombor JavaScript (FAQ)
Apa yang berlaku apabila membahagikan nombor dengan sifar di JavaScript?
Dalam JavaScript, apabila anda membahagikan nombor dengan sifar, hasilnya adalah tak terhingga. Ini kerana mana -mana nombor yang dibahagikan dengan sifar secara matematik tidak ditentukan, tetapi JavaScript mewakili ia sebagai tak terhingga untuk tujuan praktikal. Walau bagaimanapun, jika anda membahagikan sifar sebanyak sifar, hasilnya adalah nan (bukan nombor), kerana operasi ini tidak pasti dalam matematik.
Bagaimana menangani BIGINT dibahagikan dengan sifar?
BigInt adalah objek terbina dalam dalam JavaScript yang menyediakan cara untuk mewakili bilangan bulat yang lebih besar daripada 2^53-1, bilangan terbesar yang JavaScript boleh mewakili dengan menggunakan nombor primitif. Jika anda cuba membahagikan BIGINT oleh sifar, JavaScript akan membuang rangeError yang menunjukkan bahawa operasi itu tidak sah.
Bagaimana untuk mencegah atau mengendalikan pembahagian oleh ralat sifar dalam JavaScript?
Anda boleh menggunakan pernyataan bersyarat dalam JavaScript untuk mencegah atau memproses pembahagian dengan kesilapan sifar dengan memeriksa sama ada penyebutnya adalah sifar sebelum melakukan operasi pembahagian. Jika penyebutnya adalah sifar, anda boleh memutuskan cara mengendalikannya, sebagai contoh, mengembalikan nilai tertentu atau memaparkan mesej ralat.
Kenapa 0 dibahagikan dengan 0 dalam javascript nan?
Dalam matematik, ungkapan 0/0 tidak ditentukan kerana ia tidak mempunyai nilai yang jelas dan jelas. Dalam JavaScript, operasi matematik yang tidak ditentukan menghasilkan NAN (bukan nombor). Oleh itu, apabila anda membahagikan sifar dengan sifar dalam javascript, hasilnya adalah nan.
Apakah perbezaan antara NAN dan Infinity dalam JavaScript?
Dalam JavaScript, Nan (bukan nombor) dan Infinity adalah nilai khas. NAN mewakili nilai yang bukan nombor undang -undang, biasanya disebabkan oleh operasi matematik yang tidak ditentukan atau tidak pasti. Infinity, sebaliknya, mewakili nombor yang lebih besar daripada nombor yang mungkin, biasanya disebabkan oleh membahagikan nombor dengan sifar.
Bagaimana untuk memeriksa sama ada hasil dalam JavaScript adalah nan?
Anda boleh menggunakan fungsi ISNAN () dalam JavaScript untuk memeriksa sama ada hasilnya adalah NAN. Jika parameter adalah nan, fungsi ini kembali benar, jika tidak palsu.
Bagaimana untuk memeriksa sama ada hasil dalam JavaScript adalah tak terhingga?
Anda boleh menggunakan fungsi ISFinite () dalam JavaScript untuk memeriksa sama ada hasilnya adalah nombor terhingga. Jika parameter adalah positif atau negatif infiniti, fungsi ini mengembalikan palsu, jika tidak benar.
Apakah maksud nombor primitif dalam JavaScript?
Nombor primitif dalam JavaScript digunakan untuk mewakili nilai angka. Ia boleh mewakili nilai integer dan nombor titik terapung. Walau bagaimanapun, ia hanya boleh mewakili nombor sehingga 2^53-1.
Bagaimana menangani jumlah besar dalam JavaScript?
Untuk mengendalikan bilangan besar yang melebihi had integer selamat JavaScript, anda boleh menggunakan objek BIGINT. BigInt membolehkan anda mewakili bilangan bulat yang lebih besar daripada 2^53-1.
Apa itu RangeError dalam JavaScript?
JavaScript melemparkan RangeError apabila nilai tidak berada dalam julat yang diharapkan. Sebagai contoh, cuba membahagikan BIGINT oleh hasil sifar dalam rangeError.
Atas ialah kandungan terperinci Seronok dengan nombor JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Memilih Python atau JavaScript harus berdasarkan perkembangan kerjaya, keluk pembelajaran dan ekosistem: 1) Pembangunan Kerjaya: Python sesuai untuk sains data dan pembangunan back-end, sementara JavaScript sesuai untuk pembangunan depan dan penuh. 2) Kurva Pembelajaran: Sintaks Python adalah ringkas dan sesuai untuk pemula; Sintaks JavaScript adalah fleksibel. 3) Ekosistem: Python mempunyai perpustakaan pengkomputeran saintifik yang kaya, dan JavaScript mempunyai rangka kerja front-end yang kuat.

Kuasa rangka kerja JavaScript terletak pada pembangunan yang memudahkan, meningkatkan pengalaman pengguna dan prestasi aplikasi. Apabila memilih rangka kerja, pertimbangkan: 1.

Pengenalan Saya tahu anda mungkin merasa pelik, apa sebenarnya yang perlu dilakukan oleh JavaScript, C dan penyemak imbas? Mereka seolah -olah tidak berkaitan, tetapi sebenarnya, mereka memainkan peranan yang sangat penting dalam pembangunan web moden. Hari ini kita akan membincangkan hubungan rapat antara ketiga -tiga ini. Melalui artikel ini, anda akan mempelajari bagaimana JavaScript berjalan dalam penyemak imbas, peranan C dalam enjin pelayar, dan bagaimana mereka bekerjasama untuk memacu rendering dan interaksi laman web. Kita semua tahu hubungan antara JavaScript dan penyemak imbas. JavaScript adalah bahasa utama pembangunan front-end. Ia berjalan secara langsung di penyemak imbas, menjadikan laman web jelas dan menarik. Adakah anda pernah tertanya -tanya mengapa Javascr

Node.js cemerlang pada I/O yang cekap, sebahagian besarnya terima kasih kepada aliran. Aliran memproses data secara berperingkat, mengelakkan beban memori-ideal untuk fail besar, tugas rangkaian, dan aplikasi masa nyata. Menggabungkan sungai dengan keselamatan jenis typescript mencipta powe

Perbezaan prestasi dan kecekapan antara Python dan JavaScript terutamanya dicerminkan dalam: 1) sebagai bahasa yang ditafsirkan, Python berjalan perlahan tetapi mempunyai kecekapan pembangunan yang tinggi dan sesuai untuk pembangunan prototaip pesat; 2) JavaScript adalah terhad kepada benang tunggal dalam penyemak imbas, tetapi I/O multi-threading dan asynchronous boleh digunakan untuk meningkatkan prestasi dalam node.js, dan kedua-duanya mempunyai kelebihan dalam projek sebenar.

JavaScript berasal pada tahun 1995 dan dicipta oleh Brandon Ike, dan menyedari bahasa itu menjadi C. 1.C Language menyediakan keupayaan pengaturcaraan prestasi tinggi dan sistem untuk JavaScript. 2. Pengurusan memori JavaScript dan pengoptimuman prestasi bergantung pada bahasa C. 3. Ciri lintas platform bahasa C membantu JavaScript berjalan dengan cekap pada sistem operasi yang berbeza.

JavaScript berjalan dalam penyemak imbas dan persekitaran Node.js dan bergantung pada enjin JavaScript untuk menghuraikan dan melaksanakan kod. 1) menjana pokok sintaks abstrak (AST) di peringkat parsing; 2) menukar AST ke bytecode atau kod mesin dalam peringkat penyusunan; 3) Laksanakan kod yang disusun dalam peringkat pelaksanaan.

Trend masa depan Python dan JavaScript termasuk: 1. Kedua -duanya akan terus mengembangkan senario aplikasi dalam bidang masing -masing dan membuat lebih banyak penemuan dalam prestasi.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod
