✨ Ternary Operator: سر كتابة الشروط في سطر واحد بجافاسكريبت!
تخيل أنك تريد كتابة جملة if و else بسيطة، لكن بدلاً من كتابة عدة أسطر، يمكنك اختصارها كلها في سطر واحد فقط! هذا بالضبط ما يفعله Ternary Operator أو مشغل الثلاثي. إنه أداة رائعة لتبسيط الكود وجعله أنظف وأقصر عندما يكون الشرط بسيطاً.
🔍 ما هو Ternary Operator؟
Ternary Operator هو مشغل شرطي خاص في JavaScript (ومعظم لغات البرمجة) يسمح لك بتقييم شرط ما، ثم إرجاع قيمة معينة إذا كان الشرط صحيحاً (true)، وقيمة أخرى إذا كان الشرط خاطئاً (false).
فكر فيه كاختصار سحري لجملة if...else البسيطة. كلمة "Ternary" تعني "ثلاثي"، لأنه يأخذ ثلاثة معاملات (operands):
- الشرط الذي يتم اختباره.
- القيمة التي تُرجع إذا كان الشرط صحيحاً.
- القيمة التي تُرجع إذا كان الشرط خاطئاً.
📝 بناء جملة Ternary Operator (الصيغة العامة)
بناء الجملة بسيط جداً ويتبع هذا النمط:
condition ? valueIfTrue : valueIfFalse;
condition: هذا هو التعبير الشرطي الذي يتم تقييمه. يجب أن يكون نتيجتهtrueأوfalse.?: علامة الاستفهام تفصل بين الشرط والقيمة التي تُرجع عند الصحة.valueIfTrue: هذه هي القيمة (أو التعبير) التي يتم إرجاعها فقط إذا كانconditionيساويtrue.:: النقطتان تفصلان بين قيمة الصحة وقيمة الخطأ.valueIfFalse: هذه هي القيمة (أو التعبير) التي يتم إرجاعها فقط إذا كانconditionيساويfalse.
النتيجة النهائية للمشغل بأكمله تكون إما valueIfTrue أو valueIfFalse.
💡 مثال بسيط: التحقق من السن
لنبدأ بمثال واقعي. تخيل أن لدينا متغير age (عمر) ونريد إنشاء رسالة تقول إذا كان الشخص بالغاً أم قاصراً.
الطريقة الطويلة باستخدام if...else:
let age = 18;
let message;
if (age >= 18) {
message = "You are adult";
} else {
message = "You are minor";
}
console.log(message); // الناتج: "You are adult"
الطريقة المختصرة باستخدام Ternary Operator:
let age = 18;
let message = (age >= 18) ? "You are adult" : "You are minor";
console.log(message); // الناتج: "You are adult"
انظر إلى الفرق! 🤯 لقد اختصرنا 5 أسطر من الكود في سطر واحد فقط. نقرأه كالتالي: "هل العمر أكبر من أو يساوي 18؟ إذا نعم، أعطني 'أنت بالغ'، وإلا أعطني 'أنت قاصر'، ثم خزن الناتج في المتغير message".
🧪 أمثلة عملية أخرى
مثال 1: التحقق من حالة تسجيل الدخول
let isLoggedIn = true;
// إذا كان isLoggedIn يساوي true، تكون الرسالة "مرحباً مرة أخرى!"، وإلا "يرجى تسجيل الدخول"
let statusMessage = isLoggedIn ? "Welcome back!" : "Please login";
console.log(statusMessage); // الناتج: "Welcome back!"
مثال 2: العثور على الرقم الأكبر
let num1 = 10;
let num2 = 15;
// قارن بين num1 و num2، وأرجع الأكبر منهما
let largerNumber = (num1 > num2) ? num1 : num2;
console.log("الرقم الأكبر هو: " + largerNumber); // الناتج: "الرقم الأكبر هو: 15"
مثال 3: استخدامه مباشرة في console.log
لا يجب عليك دائماً تخزين الناتج في متغير، يمكنك استخدامه مباشرة:
let score = 85;
console.log( score >= 50 ? "Success" : "Fail" ); // الناتج: "Success"
⚠️ ملاحظات هامة وأفضل الممارسات
- استخدمه للشروط البسيطة فقط: Ternary Operator مثالي للشروط ذات النتيجتين البسيطتين. إذا كان لديك شروط معقدة (
else ifمتعددة) أو تحتاج تنفيذ عدة أوامر داخل كل حالة، فاستخدم جملif...elseالعادية فهي أكثر وضوحاً. - الأولوية: مثل أي مشغل، له أولوية في التنفيذ. للوضوح وتجنب الأخطاء، يمكنك دائماً وضع الشرط بين قوسين
(condition). - التداخل (Nested Ternary): يمكنك وضع Ternary داخل آخر، لكن ننصح المبتدئين بتجنب هذا لأنه يصبح صعب القراءة والصيانة. مثال (للمعرفة فقط):
لاحظ كيف أصبح الكود أقل وضوحاً. في هذه الحالة،let grade = 95; let result = grade >= 90 ? "ممتاز" : (grade >= 75 ? "جيد جداً" : "مقبول"); console.log(result); // الناتج: "ممتاز"if...else if...elseستكون خياراً أفضل.
✅ الخلاصة
- Ternary Operator (
? :) هو اختصار لـif...elseالبسيط. - بناء الجملة:
شرط ? قيمة_إذا_صح : قيمة_إذا_خطأ. - مزاياه: يجعل الكود أقصر وأنظف عند التعامل مع شروط بسيطة ذات نتيجة ثنائية.
- تحذيره: تجنبه في الشروط المعقدة أو عند الحاجة لتنفيذ أوامر متعددة.
🎓 اختبر نفسك
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال