© Khmer Angkor Academy - sophearithput168

លក្ខខណ្ឌ (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-elseswitch មិនគាំទ្រ
ពិនិត្យ range (x > 10)if-elseswitch គ្រាន់តែ === ប៉ុណ្ណោះ

💡 ឧទាហរណ៍ការប្រើ 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 សម្រាប់តម្លៃច្រើន
  • ប្រើ === សម្រាប់ការប្រៀបធៀបត្រឹមត្រូវ