كيف تكتب جملة IF داخلية في جافاسكريبت؟


كيف يمكنني استخدام جملة if ضمنية في جافاسكريبت؟ هل هناك أيضًا جملة else ضمنية؟

شيء مثل هذا:

var a = 2;
var b = 3;

if(a < b) {
    // do something
}

الإجابة رقم 1

لا تحتاج بالضرورة إلى jQuery. جافاسكريبت وحدها ستفعل ذلك.

var a = 2;
var b = 3;    
var c = ((a < b) ? 'minor' : 'major');

متغير c سيكون minor إذا كانت القيمة true، وmajor إذا كانت القيمة false.

هذا يُعرف بالمشغل الشرطي (الثلاثي).

https://developer.mozilla.org/ar/docs/JavaScript/Reference/Operators/Conditional_Operator

الإجابة رقم 2

هناك عامل ثلاثي، مثل هذا:

var c = (a < b) ? "a is less than b"  : "a is not less than b";

الإجابة رقم 3

لكتابة عبارة if بشكل مختصر، يجب أن يكون الكود داخلها عبارة عن بيان واحد فقط:

if ( a < b ) // code to be executed without curly braces;

الإجابة رقم 4

يمكنك أيضًا تقريب عبارة if/else باستخدام العوامل المنطقية فقط.

(a && b) || c

ما سبق هو تقريبا نفس القول:

a ? b : c

وطبعًا، تقريبًا نفس الشيء مثل:

if ( a ) { b } else { c }

أقول تقريبًا لأنه يوجد فرق واحد مع هذا النهج، وهو أنه يجب أن تعرف أن قيمة b ستُقيّم كصحيحة، وإلا ستحصل دائمًا على c. بشكل أساسي يجب أن تدرك أن الجزء الذي كان سيظهر if() { هنا } هو الآن جزء من الشرط الذي تضعه if ( هنا ) { }.

ما سبق ممكن بسبب سلوك جافاسكريبت في تمرير/إرجاع واحدة من القيم الأصلية التي شكلت التعبير المنطقي، وأي واحدة تعتمد على نوع العامل. لغات أخرى معينة، مثل PHP، تستمر في النتيجة الفعلية للعملية أي صحيحة أو خاطئة، بمعنى أن النتيجة دائمًا صحيحة أو خاطئة؛ على سبيل المثال:

14 && 0          /// results as 0,  not false
14 || 0          /// results as 14, not true
1 && 2 && 3 && 4 /// results as 4,  not true
true && ''       /// results as ''
{} || '0'        /// results as {}

ميزة رئيسية واحدة، مقارنةً بجملة if العادية، هي أن الطريقتين الأوليين يمكن أن تعملان على الجانب الأيمن من الوسيط أي كجزء من التعيين.

d = (a && b) || c;
d = a ? b : c;

if `a == true` then `d = b` else `d = c`

الطريقة الوحيدة لتحقيق ذلك باستخدام عبارة if القياسية ستكون بتكرار التعيين:

if ( a ) { d = b } else { d = c }

قد تتساءل لماذا نستخدم فقط العوامل المنطقية بدلاً من العامل الثلاثي؟ في الحالات البسيطة ربما لن تفعل، إلا إذا أردت التأكد من أن a و b كلاهما صحيح. يمكنك أيضًا تحقيق شروط مركبة أكثر سلاسة باستخدام العوامل المنطقية، والتي يمكن أن تصبح فوضوية جدًا عند استخدام العمليات الثلاثية المتداخلة... ومع ذلك، إذا كنت تريد أن يكون كودك سهل القراءة، فلا أي منهما حقًا بديهي جدًا.

الإجابة رقم 5

باللغة الإنجليزية البسيطة، تم شرح البنية:

if(condition){
    do_something_if_condition_is_met;
}
else{
    do_something_else_if_condition_is_not_met;
}

يمكن كتابتها كما يلي:

condition ? do_something_if_condition_is_met : do_something_else_if_condition_is_not_met;

الإجابة رقم 6

إذا كنت تريد مجرد IF داخلية (بدون ELSE)، يمكنك استخدام عامل AND المنطقي:

(a < b) && /*your code*/;

إذا كنت تحتاج أيضًا إلى ELSE، استخدم العملية الثلاثية التي اقترحها الآخرون.

الإجابة رقم 7

يمكنك أن تفعل هكذا في جافاسكريبت:

a < b ? passed() : failed();

الإجابة رقم 8

<div id="ABLAHALAHOO">8008</div>
<div id="WABOOLAWADO">1110</div>

parseInt( $( '#ABLAHALAHOO' ).text()) > parseInt( $( '#WABOOLAWADO ).text()) ? alert( 'Eat potato' ) : alert( 'You starve' );