مقادیر NaN در جاوا اسکریپت – به زبان ساده

۲۲۱۷ بازدید
آخرین به‌روزرسانی: ۷ شهریور ۱۴۰۲
زمان مطالعه: ۳ دقیقه
دانلود PDF مقاله
مقادیر NaN در جاوا اسکریپت – به زبان سادهمقادیر NaN در جاوا اسکریپت – به زبان ساده

در جاوا اسکریپت یک مقدار خاص به نام NaN به معنی «not a number» وجود دارد که برای نشان دادن این که نتیجه یک محاسبه ریاضیاتی قابل نمایش نیست مورد استفاده قرار می‌گیرد. مقادیر NaN در جاوا اسکریپت زمانی ظاهر می‌شود که تابع‌های Math ناموفق باشند. به مثال زیر توجه کنید:

997696

همچنین هنگامی که تابعی تلاش کند یک عدد را تجزیه کند با شکست مواجه می‌شود:

NaN موجب مسموم شدن همه تابع‌های ریاضیاتی دیگر می‌شود و در نهایت همه عملیات ریاضیاتی دیگر منجر به NaN می‌شوند:

تقسیم بر صفر

توجه داشته باشید که تقسیم بر صفر در جاوا اسکریپت، موجب بازگشت مقدار Infinity و نه NaN می‌شود:

دلیل این نتیجه به شیوه تعریف عددهای اعشاری در جاوا اسکریپت و به طور کلی‌تر در رایانه باز می‌گردد. به بیان خلاصه 1/0 همان حد 1/x است وقتی که x به صفر میل می‌کند. بنابراین 0/0 هیچ میان‌یابی معقولی ندارد و از این رو NaN است.

NaN کلاً به چه معنا است؟

NaN یک مشخصه شیء سراسری است.

مقدار اولیه NaN به صورت Not-A-Number است.

مقادیر NaN

پیچیدگی در بررسی NaN

متأسفانه در هنگام بررسی NaN دو مشکل وجود دارد:

  1. type of NaN به صورت Number است.
  2. NaN با همه مقادیر دیگر در جاوا اسکریپت نابرابر است.

به مثال زیر توجه کنید:

اکنون سؤال این است که چگونه می‌توانیم بررسی کنیم یک مقدار NaN داریم که عملیات ریاضی را مختل کرده است؟

بررسی NaN از طریق برابری با خود

چنان که پیش‌تر اشاره کردیم، تنها و تنها NaN است که با خودش برابر نیست. در جاوا اسکریپت بهترین روش برای بررسی NaN بودن یک مقدار بررسی برابری آن با خود (self-equality) است.

از آنجا که NaN با خودش برابر نیست، NaN!= NaN همواره مقدار صحیح تولید می‌کند. البته این روش تست مقدار NaN در کد همواره خوانا نیست، بنابراین استفاده از یک کامنت یا ایجاد یک تابع پوششی ایده خوبی به نظر می‌رسد:

نکاتی در مورد ()Number.isNan

جاوا اسکریپت مدرن یک پیاده‌سازی برای بررسی NaN بودن مقدار به نام Number.isNan()‎ دارد که مطابق انتظار عمل می‌کند. به مثال زیر توجه کنید:

توجه داشته باشید که ()Number.isNaN از تابع ()isNaN متفاوت است. ()isNaN یک پیاده‌سازی قدیمی‌تر است که هدف اصلی آن بررسی این است که آیا یک مقدار می‌تواند به صورت عددی درآید یا نه. به توضیحات تکمیلی زیر توجه کنید:

در صورتی که مقدار در حال حاضر NaN باشد، یا اگر قرار باشد پس از کاهش یافتن به عدد، به صورت NaN درآید، ()isNaN مقدار صحیح بازگشت می‌دهد. به بیان دیگر اگر مقداری دریافت کند که می‌تواند به یک عدد کاهش یابد، ()isNaN مقدار true بازگشت خواهد داد.

()Number.isNaN تنها در صورتی مقدار true بازگشت می‌دهد که مقدار در حال حاضر NaN باشد.

بنابراین اگر از مرورگرهای قدیمی (به خصوص اینترنت اکسپلورر) پشتیبانی می‌کنید که ()Number.isNaN در آن‌ها وجود ندارد، در این صورت بهترین گزینه «بررسی با خود» (self-equality) است.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۴ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
coding-in-simple-english
دانلود PDF مقاله
۳ دیدگاه برای «مقادیر NaN در جاوا اسکریپت – به زبان ساده»

خیلی ممنونم از اینکه مطالبتون رو واضحتوضیح دادید

سلام.من از صرافی رمز ارزی به کیف پول تراست ارسال کردم،تایید تراکنش اومد،کارمزد تراکنش هم کم شد اما ارز مورد نظر قیمت ندارد و به مبلغ کل اضافه نشده و در آخر اطلاعات نوشته Nonce 5164136,لطفا اگر میتونید کمکم کنید که این به چه معناست و چه خواهد شد ؟

از آقای لطفی خیلی ممنونم چون واقعا مطالبشون کمک کننده است!

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *