Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

โอเปอเรเตอร์น้อยกว่า (<) ใน JavaScript คืออะไร?


โอเปอเรเตอร์น้อยกว่า (<) ใช้ เปรียบเทียบค่า ว่า operand ซ้ายมือ น้อยกว่า operand ขวามือหรือไม่ ส่งคืน true หรือ false

ตัวอย่างโค้ด

<html>
<body>
  <script>
    var a = 10;
    var b = 20;
    document.write("(a < b) => ");
    result = (a < b);
    document.write(result); // true
  </script>
</body>
</html>

กฎการเปรียบเทียบ (Comparison Algorithm)

  1. ถ้าทั้งคู่เป็น String: เปรียบเทียบ Lexicographically (Unicode Code Point)
  2. มิฉะนั้น: แปลงทั้งคู่เป็น Number แล้วเปรียบเทียบ
  3. NaN กับอะไรก็ตาม = false

ตารางตัวอย่าง

ExpressionResultเหตุผล
10 < 20trueNumber Comparison
"10" < "20"trueString: '1' < '2'
"2" < "10"falseString: '2' > '1' (Lexicographic!)
5 < "10"trueNumber: 5 < 10
"5" < 10trueNumber: 5 < 10
"abc" < "abd"trueString Compare
null < 1truenull → 0
undefined < 1falseundefined → NaN
NaN < 1falseNaN comparisons always false

โปรโตคอล Abstract Relational Comparison

JavaScript ใช้ Algorithm มาตรฐาน:

1. ToPrimitive(x, hint Number)
2. ToPrimitive(y, hint Number)
3. If both String: Compare Lexicographically
4. Else: ToNumber(x), ToNumber(y)
5. If either NaN: return false
6. Compare Numbers

ข้อผิดพลาดที่พบบ่อย: String Comparison

// ❌ ผิด: เปรียบเทียบตัวเลขในรูป String
"100" < "20"  // true! (เพราะ '1' < '2')

// ✅ ถูก: แปลงเป็นตัวเลขก่อน
Number("100") < Number("20")  // false
+"100" < +"20"                // false
parseInt("100") < parseInt("20") // false

โอเปอเรเตอร์เปรียบเทียบชุดเดียวกัน

OperatorNameExample
<Less Thana < b
>Greater Thana > b
<=Less Than or Equala <= b
>=Greater Than or Equala >= b

แนวทางปฏิบัติที่ดี

  • แปลงเป็นตัวเลขก่อนเปรียบเทียบตัวเลข: +a < +b หรือ Number(a) < Number(b)
  • ใช้ localeCompare() สำหรับ String Comparison ที่ซับซ้อน
  • หลีกเลี่ยงการเปรียบเทียบชนิดข้อมูลต่างกันโดยไม่ได้ตั้งใจ