أولوية المعاملات في JavaScript

من موسوعة حسوب

أولوية المعاملات (operator precedence) تُحدِّد طريقة تفسير المعاملات نسبةً إلى بعضها بعضًا، والمعاملات التي لها أولوية أعلى ستصبح قيمةً تُجرى عليها عملية المعاملات ذات الأولوية المنخفضة. مثال شائع عن أولوية المعاملات:

3 + 4 * 5 // 23

معامل الضرب * له أولوية أعلى من معامل الجمع +، لذا سيُصبح ناتج التعبير ‎4 * 5 قيمةً تُجرى عليها عملية الجمع، بدلًا من أن يصبح التعبير ‎3 + 4 قيمةً تُجرى عليها عملية الضرب.

الترتيب

يُحدِّد الترتيب (associativity) الطريقة التي تُفسَّر فيها المعاملات التي لها نفس درجة الأولوية، فمثلًا لو كان لدينا التعبير الآتي:

a OP b OP c

الترتيب من اليسار إلى اليمين يعني أنَّ التعبير السابق سيُفسَّر كما يلي ‎‎‎(a OP b) OP ‎c‎، أما الترتيب من اليمين إلى اليسار يعني أنَّ ما سبق سيُفسَّر على أنَّه ‎‎‎‎‎‎‎‎‎a OP ‎(b OP c)‎‎؛ فمثلًا ترتيب معاملات الإسناد يكون من اليمين إلى اليسار، لذا يمكنك أن تكتب:

a = b = 5;

وتتوقع أنَّ النتيجة هي إسناد القيمة 5 إلى المتغيرين a و b، وهذا لأنَّ معامل الإسناد ضبط قيمة b إلى 5 ثم ضبط قيمة a إلى b وهي التي تساوي b = 5.

جدول الأولويات

الجدول الآتي مرتَّبٌ من أعلى المعاملات أولويةً (20) إلى أدناها أولويةً (0):

الأولوية نوع المعامل الترتيب المعامل
20 معامل التجميع N/A ( … )
19 الوصول إلى عناصر كائن (النقطة) من اليسار إلى اليمين … . …
الوصول إلى عناصر كائن (الأقواس) من اليسار إلى اليمين ‎‎‎… [ … ]‎
الكلمة المحجوزة new (مع وسائط) N/A new … ( … )‎
استدعاء دالة من اليسار إلى اليمين ‎… ( … )‎
18 الكلمة المحجوزة new (دون وسائط) من اليمين إلى اليسار new …‎
17 معامل الزيادة (بعد القيمة) N/A ‎… ++‎
معامل الإنقاص (بعد القيمة) N/A ‎… --‎
16 المعامل المنطقي NOT من اليمين إلى اليسار ‎! …‎
المعامل الثنائي NOT من اليمين إلى اليسار ‎~ …‎‎
إشارة الزائد من اليمين إلى اليسار ‎+ …‎
إشارة الناقص من اليمين إلى اليسار ‎- …‎
معامل الزيادة (قبل القيمة) من اليمين إلى اليسار ‎++ …‎
معامل قبل (قبل القيمة) من اليمين إلى اليسار ‎-- …‎
المعامل typeof من اليمين إلى اليسار typeof …‎
المعامل void من اليمين إلى اليسار void …‎
المعامل delete من اليمين إلى اليسار delete …‎
15 المعامل الأسي من اليمين إلى اليسار … ** …
14 معامل الضرب من اليسار إلى اليمين … * …
معامل القسمة من اليسار إلى اليمين … / …
معامل باقي القسم من اليسار إلى اليمين … % …
13 معامل الجمع من اليسار إلى اليمين … + …
معامل الطرح من اليسار إلى اليمين … - …
12 معامل الإزاحة نحو اليسار من اليسار إلى اليمين ‎… << …‎
معامل الإزاحة إلى اليمين مع الحفاظ على الإشارة من اليسار إلى اليمين ‎… >> …‎
معامل الإزاحة إلى اليمين دون الحفاظ على الإشارة من اليسار إلى اليمين ‎… >>> …‎
11 معامل أصغر من من اليسار إلى اليمين ‎… < …‎
معامل أصغر من أو يساوي من اليسار إلى اليمين ‎… <= …‎
معامل أكبر من من اليسار إلى اليمين ‎… > …‎
معامل أكبر من أو يساوي من اليسار إلى اليمين ‎… >= …‎
المعامل in من اليسار إلى اليمين … in …
المعامل instanceof من اليسار إلى اليمين … instanceof …
10 المساواة من اليسار إلى اليمين … == …
عدم المساواة من اليسار إلى اليمين ‎… != …‎
المطابقة من اليسار إلى اليمين … === …
عدم المطابقة من اليسار إلى اليمين ‎… !== …‎
9 المعامل الثنائي AND من اليسار إلى اليمين … & …
8 المعامل الثنائي XOR من اليسار إلى اليمين … ^ …
7 المعامل الثنائي OR من اليسار إلى اليمين … | …
6 المعامل المنطقي AND من اليسار إلى اليمين … && …
5 المعامل المنطقي OR من اليسار إلى اليمين … || …
4 المعامل الشرطي من اليمين إلى اليسار ‎… ? … : …‎
3 معاملات الإسناد من اليمين إلى اليسار … = …
‎… += …‎
‎… -= …‎
‎… **= …‎
‎… *= …‎
‎… /= …‎
‎… %= …‎
‎… <<= …‎
‎… >>= …‎
‎… >>>= …‎
‎… &= …‎
‎… ^= …‎
‎… |= …‎
2 المعامل yield من اليمين إلى اليسار yield …‎
المعامل yield* من اليمين إلى اليسار yield* …‎
1 معامل النشر N/A ...
0 معامل الفاصلة من اليسار إلى اليمين … , …