ค้นหาเว็บไซต์

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

บทความที่เกี่ยวข้อง