0Pricing
JavaScript Academy · บทเรียน

ความเท่ากันแบบหลวมเทียบกับแบบเคร่งครัด

ทำความเข้าใจการเปรียบเทียบ == กับ ===

ความเท่ากันแบบหลวมเทียบกับแบบเคร่งครัด เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ค่า Truthy และ Falsy
  2. ความเท่ากันแบบหลวมเทียบกับแบบเคร่งครัด
  3. การบังคับแปลงชนิดโดยนัยในการดำเนินการ
  4. เทคนิคการแปลงชนิดอย่างชัดเจน
← กลับไปที่ JavaScript Academy