លក្ខខណ្ឌ (Conditions)
សេចក្តីផ្តើម
លក្ខខណ្ឌ (Conditions) គឺជាសេចក្តីថ្លែងការណ៍ដែលអនុញ្ញាតឱ្យកម្មវិធីរបស់យើងធ្វើការសម្រេចចិត្ត។ វាដូចជាការសួរសំណួរ ហើយធ្វើសកម្មភាពផ្សេងៗគ្នាអាស្រ័យលើចម្លើយ។
ប្រភេទនៃលក្ខខណ្ឌ
ប្រភេទ | ការពិពណ៌នា | ឧទាហរណ៍ |
---|---|---|
if | ប្រតិបត្តិកូដប្រសិនបើលក្ខខណ្ឌពិត | if (age >= 18) { ... } |
else | ប្រតិបត្តិកូដប្រសិនបើលក្ខខណ្ឌមិនពិត | else { ... } |
else if | ពិនិត្យលក្ខខណ្ឌបន្ថែម | else if (age >= 13) { ... } |
switch | ពិនិត្យតម្លៃច្រើន | switch (day) { ... } |
Ternary | លក្ខខណ្ឌខ្លី | age >= 18 ? "Adult" : "Minor" |
if Statement
if (condition) {
// កូដដែលត្រូវប្រតិបត្តិ
}
ប្រតិបត្តិកូដប្រសិនបើលក្ខខណ្ឌពិតប៉ុណ្ណោះ
else និង else if
if (condition1) {
// code 1
} else if (condition2) {
// code 2
} else {
// code 3
}
ពិនិត្យលក្ខខណ្ឌច្រើន
switch Statement
switch (expression) {
case value1:
// code
break;
case value2:
// code
break;
default:
// code
}
ប្រៀបធៀបតម្លៃច្រើន
Ternary Operator
condition ? valueIfTrue : valueIfFalse
លក្ខខណ្ឌខ្លីក្នុងមួយបន្ទាត់
Comparison Operators
Operator | ឈ្មោះ | ឧទាហរណ៍ |
---|---|---|
== | ស្មើ | 5 == "5" → true |
=== | ស្មើដាច់ខាត | 5 === "5" → false |
!= | មិនស្មើ | 5 != 6 → true |
!== | មិនស្មើដាច់ខាត | 5 !== "5" → true |
> | ធំជាង | 10 > 5 → true |
< | តូចជាង | 3 < 8 → true |
Logical Operators
Operator | ឈ្មោះ | ការពិពណ៌នា |
---|---|---|
&& | AND (និង) | ពិតទាំងអស់ |
|| | OR (ឬ) | ពិតយ៉ាងហោចណាស់មួយ |
! | NOT (មិន) | បញ្ច្រាស់តម្លៃ |
Best Practices - គោលការណ៍ល្អបំផុត
១. ប្រើ === ជំនួស == (Use Strict Equality)
⭐ ប្រើ === ព្រោះវាពិនិត្យទាំងតម្លៃនិងប្រភេទ។ == អាចបង្កឱ្យមានកំហុសដោយសារការបំប្លែងប្រភេទស្វ័យប្រវត្តិ។
5 == "5" // true (មិនល្អ - ប្រភេទខុសគ្នា)
5 === "5" // false (ល្អ - ពិនិត្យត្រឹមត្រូវ)
២. ប្រើ switch សម្រាប់ករណីច្រើន (Use switch for Multiple Conditions)
⭐ ហេតុអ្វីត្រូវប្រើ switch?
✅ គុណសម្បត្តិនៃ switch:
- 🔍 ងាយអាន (Readable): នៅពេលមានករណីច្រើន (5+) កូដងាយអានជាង if-else
- ⚡ លឿនជាង (Performance): JavaScript engine optimize switch statement បានល្អជាង
- 📝 ងាយថែរក្សា (Maintainable): បន្ថែមករណីថ្មីងាយស្រួល
- 🎯 ច្បាស់លាស់ (Clear Intent): បង្ហាញច្បាស់ថាកំពុងពិនិត្យតម្លៃជាក់លាក់
📊 ប្រៀបធៀប: if-else vs switch
❌ មិនល្អ - if-else ច្រើនពេក (Too many if-else):
function getDayName(day) {
if (day === 0) {
return 'អាទិត្យ';
} else if (day === 1) {
return 'ច័ន្ទ';
} else if (day === 2) {
return 'អង្គារ';
} else if (day === 3) {
return 'ពុធ';
} else if (day === 4) {
return 'ព្រហស្បតិ៍';
} else if (day === 5) {
return 'សុក្រ';
} else if (day === 6) {
return 'សៅរ៍';
} else {
return 'មិនត្រឹមត្រូវ';
}
}
✅ ល្អ - switch (Clean & Clear):
function getDayName(day) {
switch(day) {
case 0: return 'អាទិត្យ';
case 1: return 'ច័ន្ទ';
case 2: return 'អង្គារ';
case 3: return 'ពុធ';
case 4: return 'ព្រហស្បតិ៍';
case 5: return 'សុក្រ';
case 6: return 'សៅរ៍';
default: return 'មិនត្រឹមត្រូវ';
}
}
🎓 ពេលណាត្រូវប្រើ switch?
ស្ថានភាព | ប្រើ | មូលហេតុ |
---|---|---|
ពិនិត្យ 1-2 លក្ខខណ្ឌ | if-else | សាមញ្ញ, ងាយអាន |
ពិនិត្យ 3-4 លក្ខខណ្ឌ | if-else ឬ switch | អាស្រ័យលើករណី |
ពិនិត្យ 5+ លក្ខខណ្ឌ | switch | ងាយអាន, លឿន, ងាយថែរក្សា |
ប្រៀបធៀបតម្លៃជាក់លាក់ | switch | ច្បាស់លាស់, ប្រសើរជាង |
លក្ខខណ្ឌស្មុគស្មាញ (&&, ||) | if-else | switch មិនគាំទ្រ |
ពិនិត្យ range (x > 10) | if-else | switch គ្រាន់តែ === ប៉ុណ្ណោះ |
💡 ឧទាហរណ៍ការប្រើ switch ត្រឹមត្រូវ:
// ល្អសម្រាប់: Menu system, Status codes, Actions
function handleAction(action) {
switch(action) {
case 'save':
saveData();
break;
case 'delete':
deleteData();
break;
case 'update':
updateData();
break;
case 'cancel':
cancelOperation();
break;
default:
showError('Unknown action');
}
}
// ល្អសម្រាប់: HTTP Status Codes
function getStatusMessage(code) {
switch(code) {
case 200: return 'Success';
case 201: return 'Created';
case 400: return 'Bad Request';
case 401: return 'Unauthorized';
case 404: return 'Not Found';
case 500: return 'Server Error';
default: return 'Unknown Status';
}
}
៣. ជៀសវាង nested ternary ច្រើនពេក (Avoid Nested Ternary)
❌ មិនល្អ:
const result = a > b ? a > c ? a : c : b > c ? b : c; // ពិបាកយល់!
✅ ល្អ:
const result = Math.max(a, b, c); // ឬប្រើ if-else
៤. ប្រើ early return (Use Early Return)
✅ ល្អ - កាត់បន្ថយ nesting:
function processUser(user) {
if (!user) return null; // Early return
if (!user.active) return null; // Early return
if (!user.verified) return null; // Early return
// កូដសំខាន់នៅទីនេះ
return processActiveUser(user);
}
❌ មិនល្អ - nested ច្រើនពេក:
function processUser(user) {
if (user) {
if (user.active) {
if (user.verified) {
return processActiveUser(user);
}
}
}
return null;
}
៥. ប្រើ switch fall-through ដោយប្រុងប្រយ័ត្ន
// ល្អ - Fall-through ដោយចេតនា
function getDayType(day) {
switch(day) {
case 1:
case 2:
case 3:
case 4:
case 5:
return 'ថ្ងៃធ្វើការ'; // Weekday
case 0:
case 6:
return 'ថ្ងៃឈប់សម្រាក'; // Weekend
default:
return 'មិនត្រឹមត្រូវ';
}
}
📋 សង្ខេប Best Practices:
- ✅ ប្រើ
===
ជំនួស==
រហូត - ✅ ប្រើ
switch
នៅពេលមានករណី 5+ ឬពិនិត្យតម្លៃជាក់លាក់ - ✅ ប្រើ
if-else
សម្រាប់លក្ខខណ្ឌស្មុគស្មាញ (&&, ||, >, <) - ✅ ប្រើ early return ដើម្បីកាត់បន្ថយ nesting
- ✅ ប្រើ ternary operator សម្រាប់ករណីសាមញ្ញប៉ុណ្ណោះ
- ✅ ដាក់
break
ក្នុង switch (លុះត្រាតែចង់ fall-through) - ✅ ដាក់
default
case ជានិច្ច ក្នុង switch
សង្ខេប
- Conditions អាចធ្វើការសម្រេចចិត្ត
- ប្រើ if, else if, else សម្រាប់លក្ខខណ្ឌ
- ប្រើ switch សម្រាប់តម្លៃច្រើន
- ប្រើ === សម្រាប់ការប្រៀបធៀបត្រឹមត្រូវ