از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
جاوا اسکریپت: بررسی کنید که آیا متغیر 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 نوع است:
undefined
boolean
number
string
bigint
symbol
object
null
(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