مقادیر نادرست یا Falsy Values در جاوا اسکریپت چیست؟

مقادیر نادرست یا Falsy Values در جاوا اسکریپت چیست؟


انتشار:
JavaScript
1
0

در جاوا اسکریپت، هر مقدار دارای یک معادل بولی است. این بدان معنی است که می توان آن را به عنوان درست (مقدار true) یا نادرست (مقدار false) در شرایط بولی ارزیابی کرد.

اما context بولی چیست؟ این وضعیتی است که در آن مقدار بولی مورد انتظار است. به عنوان مثال می توان به دستورات if، عملگرهای منطقی و غیره اشاره کرد. وقتی از یک مقدار غیر بولی در context بولی استفاده می کنید، جاوا اسکریپت مقدار را به معادل بولی خود تبدیل می کند.

در این مقاله با مقادیر نادرست (falsy values) در جاوا اسکریپت و نحوه بررسی نادرست بودن یک مقدار آشنا خواهید شد. این مقاله همچنین برخی از بهترین روش‌ها را پوشش می‌دهد که باید هنگام بررسی معادل بولی یک مقدار در نظر گرفته شوند.

شش مقدار نادرست (falsy values) در جاوا اسکریپت

مقادیر نادرست یا همان falsy values در جاوا اسکریپت منحصر به فرد هستند زیرا تنها شش عدد از آنها وجود دارد. به غیر از این شش، همه مقدرا های دیگر مقدار های درست هستند. شما می توانید این مقادیر نادرست را به حافظه وارد کنید. به این ترتیب، وقتی به مقداری برخورد می‌کنید که یکی از آن شش عدد نیست، می‌دانید که یک ارزش true است.

در اینجا شش مقدار نادرست در جاوا اسکریپت آمده است:

false: مقدار بولی false.
0: عدد صفر.
"" یا '' یا``: یک رشته خالی.
null: کلمه کلیدی null که نشان دهنده بدون مقدار اولیه بودن هر مقدار شی است.
undefined: کلمه کلیدی تعریف نشده که یک مقدار اولیه را نشان می دهد.
NaN: مخفف "Not a Number" است. این مقدار خاصی را نشان می دهد که از یک عملیات بازگردانده شده است که باید یک مقدار عددی را برگرداند اما این کار را نمی کند.


حال، بیایید چند نمونه عملی از این مقادیر نادرست را در جاوا اسکریپت ببینیم.

مثال 1 - مقدار بولی false

 

let isOnline = false

function checkStatus(status) {
  return Boolean(status) ? "ONLINE" : "OFFLINE"
}

checkStatus(isOnline) // "OFFLINE"

وقتی متغیر isOnline را به تابع checkStatus می‌دهید، رشته «OFFLINE» را برمی‌گرداند. و این به این دلیل است که مقدار در این زمینه نادرست است. در اینجا، ما از یک عملگر tenary بر اساس مقدار بولی آرگومان status استفاده می کنیم.

مثال 2 - عدد صفر

 

let unreadMessages = 0
let hasUnreadMessages = Boolean(unreadMessages)
console.log(hasUnreadMessages) // false

این مثال بررسی می کند که آیا کاربر پیام های خوانده نشده دارد یا خیر. ما از تابع Boolean ساخته شده برای بدست آوردن مقدار بولی متغیر UnreadMessages استفاده می کنیم. این بدان معناست که هر زمان که تعداد پیام‌های خوانده نشده صفر باشد، hasUnreadMessages نادرست خواهد بود.

مثال 3 - یک رشته خالی

 

let userInput = "";
let defaultText = "No input provided";

let displayText = Boolean(userInput) || defaultText;

console.log(displayText); // No input provided

این مثال از عملگر منطقی OR || استفاده می کند برای تعیین مقدار displayText. اگر مقداری true باشد، مقدار userInput را به displayText اختصاص می‌دهد. یا اگر userInput یک مقدار نادرست باشد، همانطور که در این مورد وجود دارد، defaultText را به displayText اختصاص می دهد.

مثال 4 - مقدار null

 

let user = null;

if (user && user.name) {
    console.log("Welcome, " + user.name + "!");
} else {
    console.log("Please log in to access the website.");
}

مثال زیر فرض می کند که کاربر وارد نشده است و بنابراین مقدار شی کاربر null است. این به این معنی است که عبارت if به نادرست ارزیابی می شود. رفتار مورد انتظار این خواهد بود که کد بلوک else را اجرا کند.

مثال 5 - مقدار تعریف نشده undefined

 

let age;
if (age === undefined) {
    console.log("The age is undefined.");
}

زمانی که متغیری اعلان می شود اما با مقداری مقدار دهی اولیه نمی شود، جاوا اسکریپت مقدار پیش فرض، تعریف نشده (undefined) را به آن اختصاص می دهد. در مثال کد بالا، از آنجایی که متغیر age اعلام شده است اما مقداری به آن اختصاص داده نشده است، مقدار آن تعریف نشده است. این بدان معناست که کد موجود در دستور if اجرا خواهد شد.

مثال 6 - مقدار NaN

 

let value1 = "Ten"
let value2 = 10

let result = value1 / value2

if (isNaN(result)) {
    console.log("The result is not a number.");
} else {
    console.log(result);
}

این مثال value1 (رشته) را بر value2 (عدد) تقسیم می کند. این به یک مقدار NaN منجر می شود زیرا نمی توانید یک رشته را بر یک عدد تقسیم کنید. این بدان معناست که کد موجود در بلوک if اجرا خواهد شد.

چگونه بررسی کنیم که آیا یک مقدار در جاوا اسکریپت نادرست است یا خیر

یک راه مطمئن برای بررسی نادرست بودن یا نبودن یک مقدار، استفاده از تابع Boolean است. تابع Boolean مقدار بولی مقدار آرگومان ارسال شده به آن را برمی گرداند.

مثال:

console.log(Boolean(false)) //false
console.log(Boolean(0)) //false
console.log(Boolean("")) //false
console.log(Boolean(null)) //false
console.log(Boolean(undefined)) //false
console.log(Boolean(NaN)) //false

در اینجا، ما مقدار بولی هر شش مقدار نادرست را بررسی می کنیم. و همانطور که انتظار می رود، هر کدام false برمی گردند.

وقتی هر مقدار دیگری که یکی از این شش مقدار نادرست بالا نیست را به تابع Boolean ارسال می کنید، مقدار true برمی گردد.

مثال:

console.log(Boolean('hello')) //true
console.log(Boolean(24)) //true

جهت کسب اطلاعات بیشتر از تفاوت بین اکمااسکریپت و جاوااسکریپت می توانید این مقاله را بررسی کنید.

مقدار های true که ممکن است به عنوان مقدار های Falsy ظاهر شوند

برخی از مقدار های true وجود دارد که در یک نگاه، ممکن است مقدار های نادرستی به نظر برسند، اما اینطور نیستند. همانطور که قبلا ذکر شد، تنها شش مقدار در جاوا اسکریپت مقادیر نادرست هستند. هر چیز غیر از اون یک مقدار درست است.

موارد زیر برخی از آن مقادیری هستند که نادرست نیستند اما ممکن است به این صورت ظاهر شوند.

console.log(Boolean('false')) // An empty object
console.log(Boolean(' ')) // An empty object
console.log(Boolean('0')) // An empty object
console.log(Boolean([])) // An empty array
console.log(Boolean({})) // An empty object

سه رشته اول حاوی متنی است که ممکن است شبیه مقادیر نادرست باشد. اولی رشته ای با متن "false"، دومی با مقداری فضای خالی ( ) و سومی با صفر است.

به یاد داشته باشید که تنها رشته ای که به عنوان مقدار نادرست در نظر گرفته می شود، یک رشته خالی است. تمام رشته‌های غیر خالی در جاوا اسکریپت مقادیر درستی هستند که فقط رشته‌هایی با فاصله خالی هستند.

همچنین، توجه داشته باشید که بر خلاف رشته ها، هم یک آرایه خالی و هم یک شی خالی در یک زمینه بولی true برمی گردند.

بهترین روش ها هنگام بررسی معادل بولی

نکات زیر به خوانایی بیشتر کد شما و نگهداری آسان تر کمک می کند.

1. از تابع Boolean استفاده کنید

زمانی که می‌خواهید درستی یا نادرستی یک مقدار را بررسی کنید، همیشه بهتر است از تابع Boolean داخلی استفاده کنید. تابع با وادار کردن هر مقدار به بولی مربوطه کار می کند. همچنین قصد شما را برای هر کسی که کد را می خواند روشن می کند.

مثال:

// Example without the Boolean function
const value = ''; 

if (value) {
    console.log('It is a TRUTHY value');
} else {
    console.log('It is a FALSY value');
}

// Example with the Boolean function
const value = ''

if (Boolean(value)) {
    console.log('It is a TRUTHY value');
} else {
    console.log('It is a FALSY value');
}

هر دو نمونه یک کار را انجام می دهند. اما در مثال دوم، واضح است که شما نمایش بولی مقدار داده شده را بررسی می کنید.

2. به جای برابری آزاد == از برابری دقیق === استفاده کنید

هنگامی که مقادیر را برای درستی یا نادرستی مقایسه می کنید، توصیه می شود از برابری دقیق (===) به جای برابری ضعیف (==) استفاده کنید. برابری دقیق هم مقدار و هم نوع را با هم مقایسه می کند. برابری == قبل از مقایسه مقادیر، اجبار نوع را انجام می دهد و این می تواند منجر به نتایج غیرمنتظره شود.

مثال:

// Strict Equality Example

if (1 === [1]) {
  console.log('EQUAL')
} else {
  console.log('NOT EQUAL')
}


// NOT EQUAL

مثال دیگر:

// Loose Equality Example
if (1 == [1]) {
  console.log('EQUAL')
} else {
  console.log('NOT EQUAL')
}

//EQUAL

هر دو مثال بالا مقادیر یکسانی را با هم مقایسه می کنند. اما مثال برابری دقیق "NOT EQUAL" را ثبت می کند. این به این دلیل است که عدد 1 با یک آرایه حاوی عدد 1 برابر نیست. با Loose Equality، نوع مقادیر را مجبور می کند تا آنها را از یک نوع بسازد. به همین دلیل است که "EQUAL" را در کنسول چاپ می کند.

3. برای مستند کردن کد خود کامنت بنویسید

برای اینکه کد خود را خواناتر و نگهداری آسان تر کنید، در صورت لزوم نظراتی را اضافه کنید تا منطق خود را هنگام برخورد با مقادیر درست و نادرست توضیح دهید.

مستندسازی کد شما تمرین خوبی برای کمک به توسعه دهندگان تیم شما (یا خود آینده شما) است که رفتار مورد نظر یک قطعه کد را درک کنند.

مثال:

let selectedUser = USER_OBJ

// Check if no user is selected
if (!selectedUser) {
    console.log("Please select a user.");
} else {
    console.log("User address: " + selectedUser.address);
}

در مثال بالا، کامنت اضافه شده قبل از دستور if به وضوح نشان می دهد که کد در حال بررسی است که آیا هیچ کاربری انتخاب نشده است.

استفاده از عملگر منطقی NOT (!) می‌تواند اینطور به نظر برسد که شما در حال بررسی انتخاب کاربر هستید نه اینکه بررسی کنید آیا کاربر انتخاب نشده است. بنابراین یک کامنت در نمونه ای مانند این به ارائه وضوح کمک می کند.

نتیجه

در این مقاله با شش مقدار نادرست در جاوا اسکریپت و تفاوت آنها با مقادیر true آشنا شده اید. شما همچنین در مورد برخی از مقدار های true که ممکن است نادرست به نظر برسند، اما در واقع اینطور نیستند، یاد گرفتید. و همچنین برخی از بهترین روش‌ها را در هنگام کار با مقادیر نادرست مشاهده کردید.

درک خوب مفهوم مقادیر نادرست و درست و نحوه تأثیر آنها بر مقایسه ها و عبارات شرطی هنگام اشکال زدایی برنامه های جاوا اسکریپت مفید خواهد بود.

#جاوااسکریپت#js#javascript#boolean_js#js_falsy#مقادیر_بولی_جاوااسکریپت
نظرات ارزشمند شما :
جهت ارسال نظر لطفا لاگین شوید.