في JavaScript ، يمكن تنفيذ العمليات الرياضية من خلال عمليتين:
1. +، -، *، /، ٪ والمشغلين الآخرين.
2. استخدم وظيفة حساب كائن الرياضيات. على سبيل المثال ، استخدم Math.Pow (2،3) لحساب قوة 2 إلى 3.
على عكس Java ، فإن العمليات الرياضية في JavaScript لا ترمي أي أخطاء. إن الفائض من نتيجة الحساب ، المقسمة على 0 ، والأرقام السلبية المربعة كلها قانونية ، والنتيجة هي قيمة خاصة في JavaScript: Plus أو Infinity (Infinity) ، بالإضافة إلى أو سلبي 0 أو NAN (غير المرتب):
1. اللانهاية الإيجابية والسلبية. عندما تكون نتيجة الحساب أكبر من العدد الأقصى الذي يمكن أن يمثله JavaScript (number.max_value) ، فإن النتيجة هي اللانهاية الإيجابية ؛ عندما تكون نتيجة الحساب أصغر من الحد الأدنى للرقم الذي يمكن أن يمثله JavaScript (-number.max_value) ، فإن النتيجة هي اللانهاية السلبية. تتبع العمليات الرياضية مثل +، -، *، و / المتعلقة بالأنفتي قواعد حساب الحد في الرياضيات المتقدمة. نتيجة 1/0 هي اللانهاية الإيجابية ، ونتيجة -1/0 هي اللانهاية السلبية.
2. زائد أو ناقص 0. عندما تكون نتيجة الحساب إيجابية ولكن أقل من الحد الأدنى العشري (number.min_value) التي يمكن أن تمثلها JavaScript ، فإن النتيجة إيجابية 0 ؛ عندما تكون نتيجة الحساب سلبية ولكن أكبر من الحد الأقصى لعشرية السلبية (-nuber.min_value) التي يمكن أن تمثلها JavaScript ، تكون النتيجة سلبية 0.
3.nan. بالنسبة لبعض نتائج الحساب الخاصة التي لا يمكن تمثيلها حتى مع اللانهاية الإيجابية والسلبية ، يستخدم JavaScript NAN لتمثيلها (تجدر الإشارة إلى أنه على الرغم من أن NAN تعني حرفيًا "غير المرتبة" ، فإن نوعه هو رقم). وتشمل هذه الحسابات الخاصة:
1) .0/0.
2).
3). أرقام سلبية مربعة.
4). إجراء عمليات تحويل رقمية على السلاسل غير الرقمية.
بالنسبة إلى Infinity و NAN ، فإنهما "لا حصر لهما" و "غير مرغوب فيه" ، كما أنهما أسماء متغيرة عالمية تمثل هاتين القيمتين الخاصتين في JavaScript. في الواقع ، في ECMASCRIPT 3 ، يمكن أيضًا تعيين هذين المتغيرين العالميين قيمًا أخرى ؛ تم تصحيح هذه القاعدة المجنونة في ECMASCRIPT 5 لجعل هذين المتغيرين العالميين للقراءة فقط. بالإضافة إلى الوصول مباشرة إلى متغير Infinity ومتغير NAN ، يمكنك أيضًا استخدام هاتين القيمتين الخاصتين من خلال الوصول إلى متغيرات الأعضاء لكائن الأرقام:
1. العدوى تعادل الرقم. positive_infinity.
2.-Infinity يعادل الرقم. negative_infinity.
3.nan تعادل الرقم.
في JavaScript ، تعد NAN قيمة خاصة مثيرة للاهتمام ، والتي لديها خاصية خاصة: إنها لا تساوي أي قيمة أخرى (بما في ذلك نفسها). هناك طريقتان لتحديد ما إذا كانت القيمة نان:
1. للمتغير x ، حدد ما إذا كان x! = x صحيح. هذا التعبير صحيح فقط إذا كان x نان.
2. بالنسبة للمتغير X ، اتصل بالوظيفة العالمية ISNAN () في JavaScript لتحديد ما إذا كان Isnan (X) صحيحًا. تحدد هذه الطريقة أن NAN ليست صارمة بالفعل ، لأن التعبير isnan (x) صحيح في 4 حالات:
1) .x هو نان.
2) .x سلسلة ، والسلسلة ليست رقم.
3) .x كائن.
4) .x غير محدد.
بالإضافة إلى ISNN () ، لدى JavaScript وظيفة عالمية أخرى مفيدة: Isfinite (). بالنسبة للمتغير A ، فإن isfinite (A) صحيح في الحالات التالية:
1) .A هو رقم ، ولكن ليس نان أو اللانهاية الإيجابية والسلبية.
2) .A هي سلسلة ، ولكن محتوى السلسلة هو رقم اللانهاية غير النار وغير إيجابي.
3) .A هو لاغ.
4) .A هي القيمة المنطقية.
نظرًا لأن الأنواع غير الرقمية مثل NULL وغير المحددة سيكون لها تأثير على النتيجة ، أعتقد شخصيا أنه من الأفضل الحكم على نوع المعلمة قبل استخدام ISNN () أو ISFINITE ().
تجربة
نسخة الكود كما يلي:
// اختبار اللانهاية
var a = number.max_value ؛
console.log (A*1.1) ؛ // Infinity
console.log (A*-1.1) ؛ //-Infinity
console.log (1/0) ؛ // Infinity
console.log (-1/0) ؛ //-Infinity
// اختبار إيجابي/سلبي 0
var b = number.min_value ؛
console.log (b/2) ؛ // 0
console.log (-b/2) ؛ // 0
// اختبار نان
console.log (0/0) ؛ // nan
console.log (Infinity/Infinity) ؛ // nan
console.log (Math.Sqrt (-1)) ؛ // nan
console.log (parseint ("string")) ؛ // nan
// اختبار ما لا نهاية المقارنة
console.log (Infinity === number.positive_infinity) ؛ // true
console.log (-infinity === number.negative_infinity) ؛ // true
// اختبار المقارنة NAN
console.log (nan === nan) ؛ // false
// اختبار isnan ()
console.log (isnan (nan)) ؛ // true
console.log (isnan ("42")) ؛ // false
console.log (isnan ("string")) ؛ // true
console.log (isnan ({})) ؛ // true
console.log (isnan (غير محدد)) ؛ // صحيح
console.log (isnan (null)) ؛ // false
// اختبار isfinite ()
console.log (isfinite (42)) ؛ // true
console.log (isfinite (Infinity)) ؛ // false
console.log (isfinite (nan)) ؛ // false
console.log (isfinite ("29")) ؛ // true
console.log (isfinite ("سلسلة")) ؛ // false
console.log (isfinite (null)) ؛ // true
console.log (isfinite (غير محدد)) ؛ // خطأ
console.log (isfinite (true)) ؛ // true
console.log (isfinite (false)) ؛ // true