Pepijat kecil boleh merayap masuk dari tempat yang tidak dijangka. Nilai buruk boleh membuat logik bersyarat anda gagal dalam cara yang tidak dijangka. Mari kita lihat dengan cepat sakit kepala ketidaksamaan yang teruk.
Fungsi ini tidak sama. Mereka kebanyakannya sama tetapi mereka mempunyai perbezaan yang sangat spesifik. Adakah anda melihatnya?
const one = (a) => a > 10; const two = (a) => !(a <= 10);
Setiap kali kami melakukan semakan ketaksamaan dengan undefined atau NaN, hasilnya adalah palsu. Jika kami tidak menyemak kes tepi secara eksplisit, dua semakan "setara" boleh mengembalikan jawapan yang berbeza.
if (!(value <= 10)) { // ...
Jika anda terjumpa kod itu, anda mungkin menukarnya kepada if (a > 10) { tanpa teragak-agak.
Tetapi kami tidak selalu mendapat nilai normal. Ini boleh menjadi perubahan besar pada kod anda. Ia boleh menyebabkan sangat sukar untuk menyelesaikan masalah kecacatan. Tiada apa-apa dalam kod mudah ini menunjukkan bahawa kita mungkin menghadapi nilai "buruk", jadi anda mungkin terlepas nilai itu sepenuhnya.
Keselamatan jenis juga tidak akan membetulkannya, kerana NaN ialah nombor...ia hanya satu buruk.
Jika anda menghadapi keadaan pelik seperti ini dalam kod anda, tanya diri anda apa yang berlaku kepada nilai yang salah jika anda menukarnya. Semoga kod anda menghalang anda daripada mendapat nilai yang buruk dan melakukan matematik yang buruk, tetapi bersikap sedikit defensif mengenai perubahan ini boleh menjimatkan banyak masalah untuk diri masa depan anda.
Dalam kes seperti ini, biasanya lebih baik untuk membuat semakan eksplisit untuk nilai buruk. Ini menyampaikan kemungkinan input dan hasil yang dijangkakan dengan jelas kepada pembangun lain.
if (Number.isNaN(value) || value > 10) { // ...
Atas ialah kandungan terperinci Bit Pantas JavaScript: Perbandingan Buruk. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!