الكائن Math في JavaScript

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

الكائن Math هو كائنٌ مُضمَّن في اللغة الذي يملك خاصيات ودوال تُمثِّل الثوابت والدوال الرياضيّة.

هذا الكائن ليس دالةً بحد ذاته، انظر قسم الوصف للمزيد من المعلومات.

الوصف

على النقيض من الكائنات العامة الأخرى، الكائن Math ليس دالةً بانيةً (constructor)، وجميع الخاصيات والدوال التابعة للكائن Math هي خاصيات ساكنة (static)، وهذا يعني أنَّك تستطيع الإشارة إلى الثابت الرياضي π (باي) باستخدام الخاصية Math.PI وتستطيع استخدام دالة جيب الزاوية (sine) كما يلي Math.sin(x)‎، إذ إنَّ القيمة x هي الوسيط المُمرَّر إلى الدالة. تُعرَّف الثوابت بالدقة الكاملة للأعداد الحقيقية في JavaScript.

الخاصيات

Math.E

ثابت أولر (Euler) وأساس اللوغاريتم الطبيعي (natural logarithms)، ويساوي القيمة 2.718 تقريبًا.

Math.LN2

اللوغاريتم الطبيعي للعدد 2، ويساوي تقريبًا 0.693.

Math.LN10

اللوغاريتم الطبيعي للعدد 10، ويساوي تقريبًا 2.303.

Math.LOG2E

اللوغاريتم الثنائي (ذو الأساس 2) للعدد E، ويساوي تقريبًا 1.443.

Math.LOG10E

اللوغاريتم العشري (ذو الأساس 10) للعدد E، ويساوي تقريبًا 0.434.

Math.PI

النسبة بين محيط الدائرة وقطرها، ويساوي تقريبًا 3.14159.

Math.SQRT1_2

الجذر التربيعي للعدد 1/2، وبالتالي ناتج قسمة 1 على الجذر التربيعي للعدد 2، ويساوي تقريبًا 0.707.

Math.SQRT2

الجذر التربيعي للعدد 2، ويساوي تقريبًا 1.414.

الدوال

لاحظ أنَّ دوال المثلثات (أي sin()‎ و cos()‎ و tan()‎ و asin()‎ و acos()‎ و atan()‎ و atan2()‎) تتوقع (أو تُعيد) الزوايا بواحدة الراديان (radian)؛ ولتحويل الزوايا من الراديان إلى الدرجات، فقسِّم قيمة الزاوية على (Math.PI / 180)، وللتحويل من الدرجات إلى الراديان فاضرب بالقيمة السابقة.

لاحظ أنَّ العديد من الدوال الرياضية دقتها تعتمد على المتصفح أو نظام التشغيل، وهذا يعني أنَّ المتصفحات المختلفة قد تعطي نتائج مختلفة؛ وحتى محرّك JavaScript نفسه قد يعطي نتائج مختلفة عند تشغيله على نظام تشغيل مختلف أو على معمارية (architecture) مختلفة.

Math.abs(x)‎

إعادة القيمة المطلقة للعدد.

Math.acos(x)‎

إعادة معكوس التجيب (arccosine) للعدد.

Math.acosh(x)‎

إعادة معكوس التجيب القطعي (hyperbolic arccosine) للعدد.

Math.asin(x)‎

إعادة معكوس الجيب (arcsine) للعدد.

Math.asinh(x)‎

إعادة معكوس الجيب القطعي (hyperbolic arcsine) للعدد.

Math.atan(x)‎

إعادة معكوس الظل (arctangent) للعدد.

Math.atanh(x)‎

إعادة معكوس الظل القطعي (hyperbolic arctangent) للعدد.

Math.atan2(y, x)‎

إعادة معكوس الظل (hyperbolic arctangent) لناتج قسمة الوسيطين المُمرّرين إلى الدالة.

Math.cbrt(x)‎

إعادة الجذر التكعيبي (cube root) للعدد.

Math.ceil(x)‎

إعادة أصغر عدد صحيح يكون مساويًا أو أكبر من العدد (أي التقريب إلى أكبر عدد صحيح).

Math.clz32(x)‎

إعادة عدد الأصفار البادئة (leading zeros) في التمثيل الثنائي (بطول 32 بت) للعدد.

Math.cos(x)‎

إعادة تجيب (cosine) للعدد.

Math.cosh(x)‎

إعادة التجيب القطعي (hyperbolic cosine) للعدد.

Math.exp(x)‎

إعادة ناتج Ex، حيث x هو الوسيط المُمرَّر إلى الدالة، و E هو ثابت أولر (2.718) وهو أساس اللوغاريتم الطبيعي.

Math.expm1(x)‎

إعادة ناتج طرح العدد 1 من الدالة exp(x)‎.

Math.floor(x)‎

إعادة أكبر عدد صحيح يكون مساويًا أو أصغر من العدد (أي التقريب إلى أصغر عدد صحيح).

Math.fround(x)‎

إعادة أقرب تمثيل للعدد كعدد عشري بدقة أحادية (single precision).

Math.hypot([x[, y[, …]]])‎

إعادة الجذر التربيعي لمجموع مربعات الوسائط المُمرَّرة إلى الدالة.

Math.imul(x, y)‎

إعادة ناتج ضرب المعاملين كعددين بطول 32 بت كما في لغة C.

Math.log(x)‎

إعادة اللوغاريتم الطبيعي (loge) للعدد.

Math.log1p(x)‎

إعادة اللوغاريتم الطبيعي (loge) للقيمة 1 + x للعدد المعطي x.

Math.log10(x)‎

إعادة اللوغاريتم العشري (أي أساسه 10) للعدد.

Math.log2(x)‎

إعادة اللوغاريتم الثنائي (أي أساسه 2) للعدد.

Math.max([x[, y[, …]]])‎

إعادة أكبر قيمة من بين الوسائط.

Math.min([x[, y[, …]]])‎

إعادة أصغر قيمة من بين الوسائط.

Math.pow(x, y)‎

رفع الأساس إلى قوة الأس، أي baseexponent.

Math.random()‎

إعادة عدد عشوائي زائف (pseudo-random number) بين 0 و 1.

Math.round(x)‎

إعادة قيمة العدد مقربةً إلى أقرب عدد صحيح.

Math.sign(x)‎

إعادة إشارة العدد x، التي تُشير إلى أنَّ العدد x موجبٌ أم سالبٌ أم صفر.

Math.sin(x)‎

إعادة جيب (sine) للعدد.

Math.sinh(x)‎

إعادة الجيب القطعي (hyperbolic sine) للعدد.

Math.sqrt(x)‎

إعادة الجذر التربيعي الموجب للعدد.

Math.tan(x)‎

إعادة ظل (tangent) العدد.

Math.tanh(x)‎

إعادة الظل القطعي (hyperbolic tangent) العدد.

Math.trunc(x)‎

إعادة الجزء الصحيح من العدد، وإزالة جميع الأرقام بعد الفاصلة العشرية.

إضافة خاصيات ودوال إلى الكائن Math

وكما في أغلبية الكائنات المُضمَّنة في لغة JavaScript، يمكن توسعة الكائن Math بإضافة خاصيات ودوال إليه؛ لكننا لا نستخدم الكائن prototype فيه، وإنما نُضيف مباشرةً إلى الكائن Math كما يلي:

Math.propName = propValue;
Math.methodName = methodRef;

على سبيل المثال، الشيفرة الآتية تُضيف دالةً إلى الكائن Math لحساب القاسم المشترك الأكبر (greatest common divisor) لقائمة من الوسائط:

Math.gcd = function () {
  var d = Math.min.apply(Math, arguments);
  for (let n = arguments.length, i = 0; d > 1 && n > i; arguments[i] % d === 0 ? i++ : (d--, i = 0));
  return d;
}

تجربة الدالة السابقة:

console.log(Math.gcd(20, 30, 15, 70, 40)); // 5

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

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي نعم نعم نعم نعم نعم

انظر إلى صفحة كل خاصية ودالة تابعة للكائن Math لتفاصيل عن دعم المتصفحات لها.

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