الكائن 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
لتفاصيل عن دعم المتصفحات لها.
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2015 (6th Edition). أضاف هذا المعيار الدوال الآتية:
log10()
وlog2()
وlog1p()
وexpm1()
وcosh()
وsinh()
وtanh()
وacosh()
وasinh()
وatanh()
وhypot()
وtrunc()
وsign()
وimul()
وfround()
وcbrt()
وclz32()
. - معيار ECMAScript 5.1.
- معيار ECMAScript 1st Edition .