ความเท่ากันแบบหลวมเทียบกับแบบเคร่งครัด
ทำความเข้าใจการเปรียบเทียบ == กับ ===
ความเท่ากันแบบหลวมเทียบกับแบบเคร่งครัด เป็นบทเรียน JavaScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน JavaScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส JavaScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
ตัวดำเนินการตรวจสอบความเท่ากันสองแบบ
JavaScript มีตัวดำเนินการตรวจสอบความเท่ากันสองแบบ ความเท่ากันแบบเคร่งครัด ซึ่งใช้เครื่องหมายเท่ากับสามตัว จะเปรียบเทียบโดยไม่แปลงชนิด ส่วน ความเท่ากันแบบไม่เคร่งครัด ซึ่งใช้เครื่องหมายเท่ากับสองตัว จะแปลงชนิดก่อนเปรียบเทียบ
console.log(1 === 1)
console.log(1 == "1")ความเท่ากันแบบเคร่งครัด
ความเท่ากันแบบเคร่งครัดจะคืนค่าเป็นจริงเฉพาะเมื่อทั้งชนิดและค่าตรงกัน จะไม่มีการบังคับแปลงชนิด
console.log(5 === 5)
console.log(5 === "5")
console.log(true === 1)ความเท่ากันแบบไม่เคร่งครัดมีการบังคับแปลงชนิด
ความเท่ากันแบบไม่เคร่งครัดจะพยายามแปลงตัวถูกดำเนินการให้เป็นชนิดเดียวกันก่อนเปรียบเทียบ ซึ่งอาจทำให้ได้ผลลัพธ์เป็นจริงอย่างน่าประหลาดใจ
console.log(5 == "5")
console.log(true == 1)
console.log(0 == false)ตัวเลขกับสตริง
เมื่อเปรียบเทียบตัวเลขกับสตริงด้วยความเท่ากันแบบไม่เคร่งครัด สตริงจะถูกแปลงเป็นตัวเลขก่อน
console.log("10" == 10)
console.log("10" === 10)การบังคับแปลงค่าบูลีน
เมื่อใช้ความเท่ากันแบบไม่เคร่งครัด ค่าบูลีนจะถูกแปลงเป็นตัวเลข ดังนั้นค่าจริงจะกลายเป็นหนึ่ง และค่าเท็จจะกลายเป็นศูนย์ก่อนการเปรียบเทียบ
console.log(true == 1)
console.log(false == 0)
console.log(true == 2)ค่าว่างกับค่าที่ไม่กำหนด
ความเท่ากันแบบไม่เคร่งครัดถือว่าค่าว่างและค่าที่ไม่กำหนดเท่ากัน แต่ไม่เท่ากับค่าอื่น เช่น ศูนย์
console.log(null == undefined)
console.log(null === undefined)
console.log(null == 0)ข้อยกเว้นของ NaN
NaN ไม่เท่ากับสิ่งใดเลย รวมถึงตัวมันเองด้วย ไม่ว่าจะใช้ตัวดำเนินการแบบใดก็ตาม ให้ใช้ Number.isNaN เพื่อตรวจสอบค่านี้
console.log(NaN === NaN)
console.log(NaN == NaN)
console.log(Number.isNaN(NaN))การอ้างอิงออบเจ็กต์
ออบเจ็กต์จะถูกเปรียบเทียบจากการอ้างอิง ไม่ใช่จากเนื้อหา ออบเจ็กต์สองรายการที่แยกจากกันแม้จะมีคุณสมบัติเหมือนกันก็ไม่เท่ากัน
const a = { x: 1 }
const b = { x: 1 }
console.log(a === b)
console.log(a === a)ผลลัพธ์แบบไม่เคร่งครัดที่น่าประหลาดใจ
ความเท่ากันแบบไม่เคร่งครัดอาจให้ผลลัพธ์ที่ขัดกับสัญชาตญาณ สตริงว่างเท่ากับศูนย์ และอาร์เรย์ว่างเท่ากับค่าเท็จหลังการบังคับแปลงชนิด
console.log("" == 0)
console.log([] == false)
console.log("0" == false)เลือกใช้ความเท่ากันแบบเคร่งครัด
คู่มือรูปแบบการเขียนส่วนใหญ่แนะนำให้ใช้ความเท่ากันแบบเคร่งครัดเป็นค่าเริ่มต้น เพื่อหลีกเลี่ยงข้อผิดพลาดจากการบังคับแปลงชนิดที่ซ่อนอยู่ ควรใช้ความเท่ากันแบบไม่เคร่งครัดเมื่อมีเหตุผลที่ตั้งใจไว้เท่านั้น
const value = "42"
if (value === "42") {
console.log("matched as string")
}การตรวจสอบค่าว่างหรือค่าที่ไม่กำหนด
การใช้ความเท่ากันแบบไม่เคร่งครัดที่ยอมรับได้อย่างหนึ่งคือการตรวจสอบค่าว่างหรือค่าที่ไม่กำหนดพร้อมกัน เนื่องจากรูปแบบการเปรียบเทียบกับค่าว่างด้วยเครื่องหมายเท่ากับสองตัวครอบคลุมทั้งสองกรณี
function check(v) {
if (v == null) {
return "missing"
}
return "present"
}
console.log(check(undefined))
console.log(check(0))ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความรู้เรื่องความเท่ากันของคุณ
ทบทวน
ทบทวน: เครื่องหมายเท่ากับสามตัวหลีกเลี่ยงการบังคับแปลงชนิด ส่วนเครื่องหมายเท่ากับสองตัวจะใช้การบังคับแปลงชนิด
- แบบเคร่งครัดตรวจสอบชนิดและค่า
- แบบไม่เคร่งครัดจะแปลงเป็นชนิดเดียวกันก่อน
- ค่าว่างเท่ากับค่าที่ไม่กำหนดเฉพาะเมื่อเปรียบเทียบแบบไม่เคร่งครัด
- เลือกใช้ความเท่ากันแบบเคร่งครัดเป็นค่าเริ่มต้น
console.log(1 === 1)
console.log(1 == "1")คำถามที่พบบ่อย
บทเรียน “ความเท่ากันแบบหลวมเทียบกับแบบเคร่งครัด” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ความเท่ากันแบบหลวมเทียบกับแบบเคร่งครัด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส JavaScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส JavaScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ความเท่ากันแบบหลวมเทียบกับแบบเคร่งครัด”
ทำความเข้าใจการเปรียบเทียบ == กับ === คุณปฏิบัติ JavaScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน JavaScript Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน JavaScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “ความเท่ากันแบบหลวมเทียบกับแบบเคร่งครัด” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน JavaScript Academy นี้ได้ไหม
ได้ บทเรียน JavaScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ค่า Truthy และ Falsy
- ความเท่ากันแบบหลวมเทียบกับแบบเคร่งครัด
- การบังคับแปลงชนิดโดยนัยในการดำเนินการ
- เทคนิคการแปลงชนิดอย่างชัดเจน