از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
جاوا اسکریپت: بررسی کنید که آیا متغیر Number است یا نه جاوا اسکریپت یک زبان تایپ پویا است، به این معنی که مفسر نوع متغیر را در زمان اجرا تعیین می کند. در عمل، این به ما این امکان را می دهد که از یک متغیر برای ذخیره انواع مختلف داده ها در یک کد استفاده کنیم. همچنین به این معنی است که بدون مستندات و سازگاری، ما همیشه …
سرفصلهای مطلب
معرفی
جاوا اسکریپت یک زبان تایپ پویا است، به این معنی که مفسر نوع متغیر را در زمان اجرا تعیین می کند. در عمل، این به ما این امکان را می دهد که از یک متغیر برای ذخیره انواع مختلف داده ها در یک کد استفاده کنیم. همچنین به این معنی است که بدون مستندسازی و سازگاری، ما همیشه از نوع یک متغیر در کد خود زمانی که از آن استفاده می کنیم نمی دانیم.
عملیاتی روی یک رشته یا آرایه زمانی که انتظار عددی را داریم می تواند نتایج عجیبی را در کد ما به همراه داشته باشد. در این مقاله، توابع مختلفی را بررسی میکنیم که میتوانند به تعیین اینکه آیا متغیری که استفاده میکنیم عدد است یا خیر.
رشته هایی که حاوی اعدادی مانند “10” هستند نباید پذیرفته شوند. در جاوا اسکریپت، مقادیر ویژه مانند NaN، Infinity و -Infinity اعداد نیز هستند – هر چند، ما آن مقادیر را نادیده می گیریم.
با این الزامات، بهترین عملکرد برای استفاده، این است isFinite() عملکرد از داخلی Number هدف – شی.
با این حال، توسعه دهندگان معمولاً از توابع دیگری برای این منظور استفاده می کنند، به ویژه Number.isNaN() و typeof() تابع.
بیایید چند متغیر برای آزمایش ایجاد کنیم:
let intVar = 2;
let floatVar = 10.5;
let stringVar = '4';
let nanVar = NaN;
let infinityVar = Infinity;
let nullVar = null;
let undefinedVar = undefined;
با استفاده از Number.isFinite() تابع
این Number.isFinite() تابع بررسی می کند که آیا متغیر یک عدد است یا نه، اما همچنین بررسی می کند که آیا یک مقدار محدود است یا خیر. بنابراین، باز می گردد false روی اعدادی که هستند NaN، Infinity یا -Infinity.
بیایید آن را آزمایش کنیم روی متغیرهایی که در بالا تعریف کردیم:
> Number.isFinite(intVar);
true
> Number.isFinite(floatVar);
true
> Number.isFinite(stringVar);
false
> Number.isFinite(nanVar);
false
> Number.isFinite(infinityVar);
false
> Number.isFinite(nullVar);
false
> Number.isFinite(undefined);
false
دقیقاً همان چیزی است که ما می خواستیم. اعداد نامتناهی خاص نادیده گرفته می شوند و همچنین هر متغیری که از نوع عددی نیست.
اگر می خواهید بررسی کنید که یک متغیر یک عدد است یا خیر، بهترین گزینه استفاده از آن است Number.isFinite() تابع.
با استفاده از Number.isNaN() تابع
استاندارد Number شی دارای یک isNaN() روش. یک آرگومان می گیرد و تعیین می کند که آیا مقدار آن وجود دارد یا خیر NaN. از آنجایی که می خواهیم بررسی کنیم که یک متغیر عددی است یا خیر، از عملگر not استفاده می کنیم. !، در چک های ما
حالا بیایید بررسی کنیم که آیا عملگر not و Number.isNaN() تابع فقط می تواند اعداد را فیلتر کند:
> !Number.isNaN(intVar);
true
> !Number.isNaN(floatVar);
true
> !Number.isNaN(stringVar);
true # Wrong
> !Number.isNaN(nanVar);
false
> !Number.isNaN(infinityVar);
true # Wrong
> !Number.isNaN(nullVar);
true # Wrong
> !Number.isNaN(undefinedVar);
true # Wrong
این روش نسبتاً مجاز است زیرا مقادیری را می پذیرد که اصلاً اعداد نیستند. این روش برای زمانی مناسب است که می دانید یک عدد دارید و می خواهید بررسی کنید که آیا عدد یک است یا خیر NaN مقدار، نه برای بررسی اعداد عمومی.
با استفاده از نوعی از() تابع
این typeof() تابع یک تابع سراسری است که یک متغیر یا مقدار را به عنوان آرگومان می پذیرد و یک نمایش رشته ای از نوع آن را برمی گرداند. جاوا اسکریپت در مجموع دارای 9 نوع است:
undefinedbooleannumberstringbigintsymbolobjectnull(typeof()به عنوان شی نشان می دهد)function(نوع خاص شی)
برای بررسی اینکه آیا یک متغیر یک عدد است، ما فقط باید بررسی کنیم که آیا مقدار توسط آن برگردانده شده است یا خیر typeof() است "number". بیایید آن را امتحان کنیم روی متغیرهای تست:
> typeof(intVar) == 'number';
true
> typeof(floatVar) == 'number';
true
> typeof(stringVar) == 'number';
false
> typeof(nanVar) == 'number';
true # Wrong
> typeof(infinityVar) == 'number';
true # Wrong
> typeof(nullVar) == 'number';
false
> typeof(undefined) == 'number';
false
این typeof() عملکرد بسیار بهتر از Number.isNaN(). به درستی تعیین می کند که یک متغیر رشته، null و undefined اعداد نیستند با این حال، آن را برای درست برمی گرداند NaN و Infinity.
در حالی که این نتیجه از نظر فنی صحیح است، NaN و Infinity مقادیر اعداد خاصی هستند، برای بیشتر موارد استفاده ترجیح می دهیم آنها را نادیده بگیریم.
نتیجه
در این مقاله یاد گرفتیم که چگونه یک متغیر در جاوا اسکریپت عددی است یا خیر. این Number.isNaN() تابع تنها در صورتی مناسب است که بدانیم متغیر ما یک عدد است و باید بررسی کنیم که آیا به طور خاص آن را بررسی کنیم NaN یا درغیر این صورت.
این typeof() اگر کد شما بتواند با آن کار کند، عملکرد مناسب است NaN، Infinity یا -Infinity و همچنین اعداد دیگر.
این Number.isFinite() روش تمام اعداد محدود را می گیرد و برای نیازهای ما مناسب ترین بود.
(برچسبها برای ترجمه)# جاوا اسکریپت
منتشر شده در 1403-01-20 04:36:04

