المعاملات الرياضية في JavaScript

من موسوعة حسوب
مراجعة 08:18، 16 يناير 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

المعاملات الرياضية (arithmetic operators) تأخذ قيمًا عدديةً وتُعيد قيمةً عدديةً واحدةً، والمعاملات الرياضية القياسية هي الجمع + والطرح - والضرب * والقسمة /.

الجمع (+)

معامل الجمع يُنتِج مجموع المدخلات الرقمية، أو يضيف سلسلتين نصيتين إلى بعضها.

البنية العامة

x + y

أمثلة

// رقم + رقم -> عملية جمع
1 + 2 // 3

// رقم + قيمة منطقية -> عملية جمع
true + 1 // 2

// قيمة منطقية + قيمة منطقية -> عملية جمع
false + false // 0

// رقم + سلسلة نصية -> عملية إضافة
5 + 'foo' // "5foo"

// سلسلة نصية + قيمة منطقية -> عملية إضافة
'foo' + false // "foofalse"

// سلسلة نصية + سلسلة نصية -> عملية إضافة
'foo' + 'bar' // "foobar"

الطرح (-)

معامل الطرح يجري عملية الطرح بين قيمتين ويعطي الفرق بينهما.

البنية العامة

x - y

أمثلة

5 - 3 // 2
3 - 5 // -2
'foo' - 3 // NaN

القسمة (/)

معامل القسمة يُقسِّم القيمة الموجودة على يسار المعامل (المقسوم) على القيمة الموجودة على يمين المعامل (المقسوم عليه).

البنية العامة

x / y

أمثلة

1 / 2 // 0.5
1.0 / 2.0 // 0.5

2.0 / 0 // Infinity
2.0 / 0.0 // Infinity

2.0 / -0.0 // -Infinity

الضرب (*)

معامل الضرب يعيد ناتج ضرب القيمتين العدديتين.

البنية العامة

x * y

أمثلة

2 * 2 // 4
-2 * 2 // -4

Infinity * 0 // NaN
Infinity * Infinity // Infinity

'foo' * 2 // NaN

باقي القسمة (%)

معامل باقي القسمة يُعيد باقي القسمة عند تقسيم قيمة على قيمة أخرى، وسيأخذ إشارة المقسوم دومًا، وليس المقسوم عليه.

البنية العامة

x % y

أمثلة

12 % 5 // 2
-1 % 2 // -1

NaN % 2 // NaN

1 % 2 // 1
2 % 3 // 2

-4 % 2 // -0
5.5 % 2 // 1.5

قوة العدد (**)

المعامل الأُسي يُعيد ناتج رفع القيمة الأولى (الأساس) إلى القيمة الثانية (الأس)، ويُعبَّر عنها رياضيًا كالآتي xy، لاحظ أنَّ تنفيذ المعامل الأسي يكون من اليمين إلى اليسار، أي a ** b ** c تكافئ ‎a ** (b ** c)‎.

لاحظ أنَّ أغلبية لغات البرمجة مثل PHP و Python وغيرهما تملك المعامل **، لكن يكون له أولوية على المعاملات الأحادية (unary operators) مثل المعامل الأحادي + والمعامل الأحادي -، لكن هنالك بعض الاستثناءات؛ فمثلًا في Bash يكون للمعامل ** أولوية أقل من المعاملات الأحادية؛ أما في JavaScript من غير الممكن كتابة تعبير فيه معامل أحادي (أي +/-/~/!/delete/void/typeof) قبل قيمة أساس المعامل الأُسي.

-2 ** 2; 
// 4  Bash, -4 in other languages. 
// لكن التعبير السابق غير صالحة في JavaScript 


-(2 ** 2); // -4

البنية العامة

x ** y

أمثلة

2 ** 3 // 8
3 ** 2 // 9
3 ** 2.5 // 15.588457268119896
10 ** -1 // 0.1
NaN ** 2 // NaN

2 ** 3 ** 2 // 512
2 ** (3 ** 2) // 512
(2 ** 3) ** 2 // 64

استخدام معامل التجميع لقلب إشارة ناتج العملية:

-(2 ** 2) // -4

ولجهل قيمة أساس العملية سالبةً، فسنستخدم الشكل:

(-2) ** 2 // 4

ملاحظة: يوجد في JavaScript معامل ثنائي هو ^ (أي logical XOR)، والمعاملان ** و ^ مختلفان عن بعضهما تمامًا (مثلًا: ‎2 ** 3 === 8 بينما ‎2 ^ 3 === 1).

الزيادة (++)

معامل الزيادة يؤدي إلى زيادة القيمة (بمقدار 1) ويعيد القيمة الناتجة.

  • إذا كان معامل الزيادة بعد القيمة (أي مثلًا x++‎) فستُعاد القيمة قبل إجراء عملية الزيادة.
  • إذا كان معامل الزيادة بعد القيمة (أي مثلًا ‎++x) فستُعاد القيمة بعد إجراء عملية الزيادة.

البنية العامة

x++
++x

أمثلة

// المعامل بعد القيمة 
var x = 3;
y = x++; // y = 3, x = 4

// المعامل قبل القيمة
var a = 2;
b = ++a; // a = 3, b = 3

الإنقاص (--)

معامل الإنقاص يؤدي إلى إنقاص القيمة (بمقدار 1) ويعيد القيمة الناتجة.

  • إذا كان معامل الإنقاص بعد القيمة (أي مثلًا x--‎) فستُعاد القيمة قبل إجراء عملية الإنقاص.
  • إذا كان معامل الإنقاص بعد القيمة (أي مثلًا ‎--x) فستُعاد القيمة بعد إجراء عملية الإنقاص.

البنية العامة

x--
--x

أمثلة

// المعامل بعد القيمة 
var x = 3;
y = x--; // y = 3, x = 2

// المعامل قبل القيمة
var a = 2;
b = --a; // a = 1, b = 1

إشارة الزائد (+)

معامل الزائد الأحادي (unary plus operator) يسبق القيمة ويحاول تحويلها إلى رقم إن لم تكن قيمةً رقميةً، وصحيحٌ أنَّ معامل الناقص الأحادي (-) يمكنه تحويل القيم غير الرقمية إلى رقمية، لكن من المفضَّل استخدام معامل الزائد الأحادي لأنه الطريقة المثلى تحويل قيمة ما إلى رقم لأنه لا يجري أيّة عمليات على الرقم؛ ويمكنه تحويل الأعداد الصيحية والعشرية الموجودة في سلاسل نصية إلى أرقام، إضافةً إلى القيم غير النصية مثل true و false و null؛ ويدعم تحويل الأعداد في نظام العد العشري والست عشري (الأرقام التي يسبقها 0x)، ويدعم أيضًا الأعداد السالبة (على أن لا تكون بنظام العد الست عشري)، وإذا لم يتمكن هذا المعامل من تفسير قيمة ما فسيحوِّلها إلى NaN.

البنية العامة

+x

أمثلة

+3     // 3
+'3'   // 3
+true  // 1
+false // 0
+null  // 0
+function(val){  return val } // NaN

إشارة الناقص (-)

معامل الناقص الأحادي (unary negation operator) يسبق قيمةً ما ويحولها إلى قيمة عددية (كما هو مذكور في القسم السابق) ويعكس إشارتها.

البنية العامة

-x

أمثلة

var x = 3;
y = -x; // y = -3, x = 3

var x = "4";
y = -x; // y = -4

دعم المتصفحات

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي نعم نعم نعم نعم نعم
قوة العدد 52 52 غير مدعومة نعم ؟

مصادر ومواصفات