مشغل أحادي
يُطلق على المشغل الذي يمكنه تشغيل قيمة واحدة فقط مشغل أحادي.
المشغل Unary هو أبسط مشغل في ECMASCRIPT.
1. الزيادة وتقليل المشغلين
إن الزيادة والتقليل من المشغلين تقترض مباشرة من C ، ولكل منها نسختين: ما قبل النوع وما بعد النوع. قال Gu Mingsi إن ما قبل النوع يجب أن يفسح المجال للمتغير ليتم تشغيله ، في حين يجب أن يتبع المتغير الذي يتم تشغيله.
النوع الأمامي:
var num1 = 1 ؛ var num2 = 2 ؛ var num3 = ++ num1 +num2 ؛ // 4
النوع الخلفي:
var num1 = 1 ؛ var num2 = 2 ؛ var num3 = num1 +++ num2 ؛ // 3
الرموز المذكورة أعلاه لهما نتائج مختلفة ، لأن هناك فرقًا مهمًا للغاية بين ما بعد الدمج و Precrement والانخفاض ، أي ما بعد الانصهار وخفض العمليات يتم تنفيذها بعد تقييم البيان الذي يحتوي عليها.
نطاق التطبيق:
تنطبق جميع المشغلين الأربعة على أي قيمة ما قبل الخلاصة وما بعد الموردين. عند تطبيقه على قيم مختلفة ، يحول هذا المشغل القيمة مثل وظيفة التحويل الرقم () ، ويضيف ويطرح 1 بعد التحويل.
2. في اتجاه واحد عوامل المشغلين والطرح
يستخدم مشغل الإضافة والطرح الأحادي بشكل أساسي للعمليات الحسابية الأساسية ، ويمكن استخدامه أيضًا لتحويل أنواع البيانات (يقوم المشغل بتحويل هذه القيمة مثل وظيفة التحويل الرقم ()).
مشغل منطقي
هناك ثلاثة مشغلي منطقيين: غير (لا) ، و (و) ، أو (أو).
1. المنطق غير اللوحي
يتم تمثيل غير المربحة المنطقية بعلامة تعجب (!) ويمكن تطبيقها على أي قيمة في ECMASCRIPT. بغض النظر عن نوع البيانات ، فإن هذه القيمة هي ، يعيد هذا المشغل قيمة منطقية.
إن استخدام اثنين من عمليات التشغيل المنطقية في نفس الوقت سيحاكي فعليًا سلوك وظيفة التحول المنطقية ()
2. المنطق و
يتم تمثيل المنطق والمشغلين بمجموعتين (&&) ، وهناك معاملان ويمكن تطبيقهما على أي نوع من المعامل. المنطق وعملية الدائرة القصيرة ، أي إذا تم تقييم المعامل الأول على أنه خطأ ، فلن يتم تقييم المعامل الثاني.
عندما تكون كلتا القيمتين صحيحة ، تكون النتيجة صحيحة. عندما تكون قيمتان صحيتان وكاذبتين ، تكون النتيجة خاطئة. إرجاع خطأ عندما تكون كلتا القيمتين خاطئة.
عندما لا يكون إحدى القيم منطقية: اتبع القواعد التالية
المعامل الأول كاذب ، ويتم إرجاع الأول ؛
عندما يكون المعامل الأول صحيحًا ، يتم إرجاع المعامل الثاني.
إذا كان المعامل الأول هو كائن ، يتم إرجاع المعامل الثاني
var a = {b: 1} ؛ a && 'ss' // "ss"إذا كان المعامل الثاني كائنًا ، فسيتم إرجاع الكائن فقط إذا كانت نتيجة التقييم للمعامل الأول صحيحة
'ss' && a // object {b: 1}إذا كانت كلا المعاملين كائنات ، يتم إرجاع المعامل الثاني
var c = {d: 2} ؛ c && a // object {b: 1}(1) إذا كان المعامل لاغية ، فالارتداد فارغًا
(2) إذا كان هناك معامل نان ، فسيتم إرجاع نان
(3) إذا كان المعامل غير محدد ، فأعد غير محدد
3. منطقية أو
على غرار المنطق والمشغلين ، فإن المنطق أو المشغلين هم أيضًا مشغلي دائرة قصيرة. وهذا يعني ، إذا كانت نتيجة التقييم للمعامل الأول صحيحة ، فلن يتم إجراء تقييم المعامل الثاني.
(1) المعامل الأول صحيح ، إرجاع الأول
(2) المعامل الأول كاذب ، وإرجاع الثانية
مشغل الضرب
يحدد ECMASCRIPT 3 عوامل الضرب: الضرب ، التقسيم والوحدات المعيارية
Infinity*0 // NAN0/0 // naninfinity/infinity // nan
المشغل المضافة
1. إضافة (بدوره السلسلة)
كلا المشغلين قيم رقمية
إجراء حسابات إضافة منتظمة.
اللانهاية + -infinity // نان
إذا كان المعامل عبارة عن سلسلة
إذا كان كلا المشغلين سلاسل ، فسيتم تقطيع المشغل الثاني مع المشغل الأول
إذا كان مشغل واحد فقط عبارة عن سلسلة ، فقم بتحويل المعامل الآخر إلى سلسلة ثم قم بربط السلاسل معًا.
إذا كان هذا المعامل كائنًا أو رقميًا أو منطقيًا ، فاستدعاء طريقة TOSTRING () للحصول على قيمة السلسلة المقابلة ، ثم قم بتطبيق القواعد السابقة حول الأوتار. بالنسبة إلى NULL وغير المحددة ، يتم استدعاء وظيفة String () ويتم الحصول على السلاسل "غير المحددة" و "NULL" على التوالي.
2 + '' // "2"
2. الطرح (العودة إلى القيمة)
إذا كانت كلا المعاملين عدديًا
أداء عملية الطرح الحساب العادية وإرجاع النتيجة. إذا كان المعامل نان ، فإن النتيجة هي نان
اللانهاية - اللانهاية // نان
إذا كان هناك معامل ليس قيمة رقمية
إذا كان المعامل عبارة عن سلسلة ، أو وظيفة منطقية ، أو خالية ، أو غير محددة ، يتم استدعاء وظيفة الرقم () في الخلفية لتحويلها إلى قيمة رقمية ، ثم تنفيذ حساب الطرح وفقًا للقواعد السابقة. إذا كانت نتيجة التحويل نان ، فإن نتيجة الطرح هي نان.
إذا كان المعامل كائنًا ، يتم استدعاء طريقة ValueOF () للكائن للحصول على القيمة التي تمثل الكائن. إذا كانت القيمة التي تم الحصول عليها نان ، فإن نتيجة الطرح هي NAN. إذا لم يكن للكائن طريقة قيمة () ، فسيتم استدعاء طريقة TOSTRING () ويتم تحويل السلسلة الناتجة إلى قيمة رقمية.
5 - صحيح // 4
المشغلين العلائقيين
إذا كانت كلتا المعاملين قيمًا رقميًا ، فقم بإجراء مقارنة عددية
إذا كان كلتا المعاملين سلاسل ، قارن قيم ترميز الأحرف المقابلة للسلاسلتين
إذا كان أحد المعاملين قيمة رقمية ، فقم بتحويل معامل آخر إلى قيمة رقمية وأداء مقارنة عددية
var result = '23' <'3' // truevar result = '23' <3 // false
مشغل مساوٍ
1. متساوٍ وغير متكافئ
تحويل أولاً ثم قارن
(1) إذا كان المعامل قيمة منطقية ، فقم بتحويلها إلى قيمة رقمية قبل مقارنة المساواة
(2) إذا كان هناك معامل عبارة عن سلسلة وآخر معامل هو قيمة رقمية ، فقم بتحويلها إلى قيمة رقمية أولاً
(3) إذا كان أحد المعاملين هو كائن والآخر ليس كذلك ، فسيتم استدعاء طريقة قيمة الكائن (يتم استدعاء قيمة النوع الأساسية التي تم الحصول عليها وفقًا للقواعد الأساسية السابقة.
فارغة وغير محددة متساوية
لا يمكنك تحويل الفارغ وغير المحددة إلى أي قيمة أخرى قبل مقارنة المساواة
إذا كان كل من المعاملات نان ، فإن المشغل المساواة يعيد أيضا خطأ. وفقا للقاعدة ، نان لا يساوي نان
2. متطابق وغير مكتمل
قارن فقط ، لا يتحول
"55"! == 55 // صحيح
المشغل الشرطي
متغير = boolean_expression؟ true_value: false_value
في الأساس ، فإن معنى هذا الرمز هو تحديد القيمة للمتغير المتغير بناءً على نتيجة تقييم Boolean_expression. إذا كانت نتيجة التقييم صحيحة ، فقم بتعيين true_value للمتغير ؛ إذا كانت نتيجة التقييم خاطئة ، فقم بتعيين false_value للمتغير المتغير.
تعيين المشغل
يتم تمثيل مشغل تعيين بسيط بعلامة متساوية ، ووظائفه هي تعيين القيمة على اليمين إلى المتغير على اليسار.
مشغل فاصلة
يستخدم مشغل الفاصلة في الغالب لإعلان متغيرات متعددة ؛ ولكن بالإضافة إلى ذلك ، يتم استخدام مشغل الفاصلة أيضًا لتعيين القيم. عند استخدامه للواجب ، يقوم مشغل الفاصلة دائمًا بإرجاع العنصر الأخير في التعبير.