javascript ตรวจสอบว่าไม่เป็นค่า null
ด้านล่างนี้เป็นตัวอย่างโค้ด ซึ่งเราเรียกค่าจากฟอร์ม ก่อนที่จะดำเนินการต่อ ตรวจสอบว่าค่าดังกล่าวไม่เป็นค่าว่าง
var val = document.FileList.hiddenInfo.value;
alert("val is " + val); // this prints null which is as expected
if (val != null)
{
alert("value is "+val.length); // this returns 4
}
else
{
alert("value* is null");
}
มีใครบ้างที่รู้ว่าทำไมมันถึงเกิดขึ้นแบบนี้ไหม.. ??
คำตอบ #1
นี่จะใช้ได้ผลสำหรับคุณ
if (!!val) {
alert("this is not null")
} else {
alert("this is null")
}
คำตอบ #2
มี 3 วิธีในการตรวจสอบว่า 'ไม่เป็นค่าว่าง' คำแนะนำของฉันคือการใช้เวอร์ชันไม่ใช่ค่าที่เข้มงวด
1. เข้มงวด ไม่ใช่รุ่น
if (val !== null) { ... }
รุ่น Strict Not Version ใช้อัลกอริธึมการเปรียบเทียบความเท่าเทียมแบบเข้มงวด ตัวดำเนินการ !== มีประสิทธิภาพที่เร็วกว่า ตัวดำเนินการ != เพราะอัลกอริธึมการเปรียบเทียบความเท่าเทียมแบบเข้มงวดไม่ทำการแปลงชนิดของค่า
2. เวอร์ชันไม่เข้มงวด
if (val != null) { ... }
เวอร์ชัน ไม่เข้มงวด ใช้อัลกอริทึมการเปรียบเทียบความเท่าเทียมเชิงนามธรรม ตัวดำเนินการ != มีประสิทธิภาพช้ากว่าตัวดำเนินการ !== เนื่องจากอัลกอริทึมการเปรียบเทียบความเท่าเทียมเชิงนามธรรมแปลงประเภทของค่า
3. รุ่น Double Not
if (!!val) { ... }
เวอร์ชัน Double Not มีประสิทธิภาพที่เร็วกว่าทั้งเวอร์ชัน Strict Not และเวอร์ชัน Non-Strict Not อย่างไรก็ตาม ตัวดำเนินการ !! จะทำการแปลงค่าที่เป็น "falsey" เช่น 0, '', undefined และ NaN ให้เป็น false ซึ่งอาจทำให้เกิดผลลัพธ์ที่ไม่คาดคิด และยังทำให้การอ่านโค้ดยากขึ้นเนื่องจาก null ไม่ได้ระบุไว้อย่างชัดเจน
คำตอบ #3
เป็นเพราะ val ไม่ใช่ null แต่มีค่า 'null' ในรูปแบบสตริง
ลองตรวจสอบกับ 'null'
if ('null' != val)
สำหรับคำอธิบายว่าเมื่อต่อเวลาและเหตุผลที่สิ่งนี้ทำงานได้ โปรดดูรายละเอียดด้านล่าง
คำตอบ #4
ใช้ !== เนื่องจาก != จะทำให้คุณเข้าไปสู่โลกของความแปลกของตารางความจริงแบบไม่สามารถถ่ายโอนใน JavaScript
