โอเปอเรเตอร์น้อยกว่า (<) ใช้ เปรียบเทียบค่า ว่า 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)
- ถ้าทั้งคู่เป็น String: เปรียบเทียบ Lexicographically (Unicode Code Point)
- มิฉะนั้น: แปลงทั้งคู่เป็น Number แล้วเปรียบเทียบ
NaNกับอะไรก็ตาม =false
ตารางตัวอย่าง
| Expression | Result | เหตุผล |
|---|---|---|
10 < 20 | true | Number Comparison |
"10" < "20" | true | String: '1' < '2' |
"2" < "10" | false | String: '2' > '1' (Lexicographic!) |
5 < "10" | true | Number: 5 < 10 |
"5" < 10 | true | Number: 5 < 10 |
"abc" < "abd" | true | String Compare |
null < 1 | true | null → 0 |
undefined < 1 | false | undefined → NaN |
NaN < 1 | false | NaN 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
โอเปอเรเตอร์เปรียบเทียบชุดเดียวกัน
| Operator | Name | Example |
|---|---|---|
< | Less Than | a < b |
> | Greater Than | a > b |
<= | Less Than or Equal | a <= b |
>= | Greater Than or Equal | a >= b |
แนวทางปฏิบัติที่ดี
- แปลงเป็นตัวเลขก่อนเปรียบเทียบตัวเลข:
+a < +bหรือNumber(a) < Number(b) - ใช้
localeCompare()สำหรับ String Comparison ที่ซับซ้อน - หลีกเลี่ยงการเปรียบเทียบชนิดข้อมูลต่างกันโดยไม่ได้ตั้งใจ