JavaScript/Topics/Expressions and Operators
هذا القسم فيه ما يتعلق بالتعابير والمعاملات في JavaScript.
التعابير الأساسية
وهي تتضمن التعابير والكلمات المحجوزة العامة في JavaScript.
this
تُحدَّد قيمة الكلمة المحجوزة this
وفق طريقة استدعاء الدالة.
function
(تعبير تعريف الدوال)
الكلمة المحجوزة function
تُستخدَم لتعريف دالة داخل تعبير (expression). انظر إلى صفحة «الدوال في JavaScript» للمقارنة بين صيغ تعريف الدوال.
class
(تعبير تعريف الأصناف)
الكلمة المحجوزة class
تشير إلى تعبير تعريف للأصناف.
function*
(تعبير تعريف الدوال المولدة)
الكلمة المحجوزة function*
تُستخدَم لتعريف دالة مولِّدة داخل تعبير. انظر إلى صفحة «الدوال في JavaScript» للمقارنة بين صيغ تعريف الدوال.
yield
الكلمة المحجوزة yield
تُستخدَم لإيقاف تنفيذ دالة مولِّدة (function*
) مؤقتًا واستئناف تنفيذها.
yield*
التعبير yield*
يُستخدَم لتفويض التنفيذ إلى دالة مولِّدة أخرى أو كائن iterable
.
async function*
(تعبير تعريف الدوال غير المتزامنة)
الكلمة المحجوزة async function
تُستخدَم لتعريف دوال غير متزامنة ضمن تعبير (expression). انظر إلى صفحة «الدوال في JavaScript» للمقارنة بين صيغ تعريف الدوال.
await
يُستخدَم لانتظار وعد (الكائن Promise
)، ويمكن أن يُستخدَم داخل دالة غير متزامنة فقط (async function).
[]
الشكل المختصر لتعريف المصفوفات.
{}
الشكل المختصر لتهيئة الكائنات.
/ab+c/i
الشكل المختصر لتعريف التعابير النمطية (regular expressions).
( )
معامل التجميع.
تعابير الإسناد
الوصول إلى الخاصيات
طرائق الوصول إلى الخاصيات توفِّر وصولًا إلى خاصيات أحد الكائنات باستخدام طريقة النقط أو طريقة الأقواس.
new
يُنشِئ نسخةً من كائن مُعرَّف من المستخدم أو نسخةً من أحد أنواع الكائنات المُضمّنة في لغة JavaScript والتي تملك دالةً بانيةً.
new.target
تسمح لك بمعرفة إن استدعيت دالةٌ عاديةٌ أم دالةٌ بانيةٌ باستخدام المعامل new
.
super
تُستخدَم للوصول إلى الكائنات في الكائن الأب واستدعائها.
معامل النشر (obj...
)
معامل النشر (spread operator) يسمح للكائنات التي يمكن المرور على عناصرها (أي أنها iterable) مثل تعابير المصفوفات أو السلاسل النصية أن توسَّع في الأماكن التي تتوقع JavaScript وجود صفر وسيط أو أكثر (عند استدعاء الدوال) أو صفر عنصر أو اكثر (في المصفوفات)، أو نشر كائن في الأمكان التي تتوقع JavaScript وجود صفر زوج أو أكثر من المفتاحي والقيم المرتبطة بها (عند تعريف الكائنات).
معاملات الزيادة والنقصان
وهي تتضمن الزيادة (أو النقصان) قبل الإسناد، والزيادة (أو النقصان) بعد الإسناد.
A++
A--
++A
--A
المعاملات الأحادية
وهي المعاملات التي تجري عمليتها على قيمة واحدة فقط.
delete
: يحذف خاصيةً من كائن.
typeof
: يُعيد سلسلةً نصية تُشير إلى نوع القيمة التي تليه.
~
: معامل NOT الثنائي.
!
: معامل NOT المنطقي.
المعاملات الرياضية
المعاملات الرياضية تأخذ القيم العددية وتجري عليها عمليةً ثم تعيد قيمةً واحدةً.
+
: معامل الجمع.-
: معامل الطرح./
: معامل القسمة.*
: معامل الضرب.%
: معامل باقي القسمة**
: معامل رفع العدد إلى قوة.
المعاملات النسبية
تجري هذه المعاملات عملياتها على قيمةٍ ما وتُعيد قيمةً منطقية (Boolean
) بناءً على قيمة ناتج المقارنة.
in
يُعيد القيمة true
إذا كانت الخاصية المُحدَّدة موجودةً في الكائن أو في سلسلة prototype الخاصة به.
instanceof
يختبر إذا كانت الخاصية prototype
لدالة بانية تظهر في أيّ مكان في سلسلة prototype لأحد الكائنات.
معاملات المقارنة
>
: أقل من.<
: أكبر من.=>
: أقل من أو يساوي.=<
: أكبر من أو يساوي.
معاملات المساواة
هذه المعاملات تعيد قيمةً منطقيةً (Boolean
) بناءً على ناتج اختبار مساواة قيمتين مع بعضهما بعضًا.
==
: معامل المساواة.=!
: معامل عدم المساواة.===
: معامل المطابقة.==!
: معامل عدم المطابقة.
المعاملات الثنائية
تُعامِل المعاملات الثنائية القيم على أنها مجموعة من 32 بت (أصفار وواحدات) وتُعيد قيمًا رقميةً عادية.
-
<<
: معامل الإزاحة إلى اليسار. <<
: معامل الإزاحة إلى اليمين.<<<
: معامل الإزاحة إلى اليمين دون إشارة.&
: معامل AND الثنائي.|
: معامل OR الثنائي.^
: معامل XOR الثنائي.
المعاملات المنطقية
تُستخدَم المعاملات المنطقية عادةً مع القيم المنطقية (Boolean)، وتُعيد قيمةً منطقيةً أيضًا.
&&
: معامل AND المنطقي.||
: معامل OR المنطقي.
المعامل الشرطي الثلاثي
هو المعامل الوحيد في JavaScript الذي يأخذ ثلاثة قيمة ليجري عليها عمليته، ومن الشائع استخدام هذا المعامل كاختصارٍ للتعبير البرمجي if
.
معاملات الإسناد
تُسنِد هذه المعاملات القيمة التي على يسار المعامل بناءً على قيمة ما على يمينه.
=
: معامل الإسناد.=*
: معامل الإسناد والضرب.=/
: معامل الإسناد والقسمة.=%
: معامل الإسناد وحساب باقي القسمة.=+
: معامل الإسناد والجمع.=-
: معامل الإسناد والطرح.=>>
: معامل الإسناد والإزاحة إلى اليسار.=<<
: معامل الإسناد والإزاحة إلى اليمين.=<<<
: معامل الإسناد والإزاحة إلى اليمين دون الحفاظ على الإشارة.=&
: معامل الإسناد وإجراء عملية AND الثنائية.=^
: معامل الإسناد وإجراء عملية XOR الثنائية.=|
: معامل الإسناد وإجراء عملية OR الثنائية.
الإسناد بالتفكيك
الاسناد بالتفكيك (destructuring assignment) يسمح بتفكيك القيم الموجودة في المصفوفات أو خاصيات أحد الكائنات إلى متغيرات مستقلة.
[a, b] = [1, 2]
{a, b} = {a:1, b:2}
معامل الفاصلة
يُقدِّر القيم التي يجري عمليتها عليها (من اليسار إلى اليمين) ويُعيد قيمة آخر قيمة.