جاوا اسکریپت خوش زبان قسمت هفتم
آن چیزی که شما می خواهید یا انتظار دارید نیستند به این می گویند اجبار نوع. صفر در
عبارت اول 0 می شود و “5” در عبارت دوم 5 می شود
(از رشته به عدد). با این حال در عبارت سوم، + الحاق رشته را قبل از جمع عددی امتحان می کند، بنابراین 1 به “1” تبدیل می شود (از عدد به
رشته).
وقتی چیزی که به صورت واضح به عددی نگاشت نمی شود (مانند
“پنج” یا تعریف نشده) به عدد تبدیل می شود، مقدار NaN را دریافت می کنید. به علاوه
عملیات محاسباتی روی NaN به تولید NaN ادامه میدهد، بنابراین اگر متوجه شدید که این کار را میکنید
یکی از کسانی که در یک مکان غیرمنتظره است، به دنبال تبدیل های تصادفی نوع باشید.
هنگام مقایسه مقادیر یکسان با استفاده از ==، نتیجه آسان است
پیش بینی کنید: زمانی که هر دو مقدار یکسان هستند، باید درست دریافت کنید، مگر در مورد
از NaN. اما هنگامی که انواع متفاوت است، جاوا اسکریپت از یک پیچیده و گیج کننده استفاده می کند
مجموعه ای از قوانین برای تعیین اینکه چه کاری باید انجام شود. در بیشتر موارد، فقط سعی می کند تبدیل کند
یکی از مقادیر به نوع مقدار دیگر. با این حال، زمانی که تهی یا تعریف نشده باشد
در هر دو طرف عملگر رخ می دهد، فقط در صورتی درست می شود که هر دو طرف یکی باشند
صفر یا تعریف نشده
console.log(null == undefined);
// → درست است
console.log(null == 0);
// → نادرست
این رفتار اغلب مفید است. وقتی می خواهید تست کنید که آیا یک مقدار a دارد یا خیر مقدار واقعی به جای null یا undefined، می توانید آن را با null با مقدار مقایسه کنید عملگر == (یا !=). اما اگر بخواهید آزمایش کنید که آیا چیزی به مقدار دقیق اشاره دارد یا خیر، چه؟
نادرست؟ عباراتی مانند 0 == false و “” == false نیز درست هستند زیرا تبدیل نوع خودکار زمانی که هیچ نوع تبدیلی نمی خواهید دو عملگر اضافی وجود دارد: === و !==. اولین تست ها آیا یک مقدار دقیقاً برابر است یا خیر، و دومی آزمایش می کند که آیا آن مقدار است یا خیر
دقیقا برابر نیست بنابراین “” === false همانطور که انتظار می رود نادرست است.
توصیه می کنم از عملگرهای مقایسه سه نویسه به صورت دفاعی استفاده کنید
از تبدیلهای غیرمنتظره نوع جلوگیری کنید. اما وقتی که هستید
مطمئناً انواع هر دو طرف یکسان خواهد بود، استفاده از آن مشکلی ندارد
اپراتورهای کوتاهتر
اتصال کوتاه عملگرهای منطقی
عملگرهای منطقی && و || مقادیر مختلف انواع مختلف را به شکلی خاص مدیریت کنید
مسیر. آنها مقدار سمت چپ خود را به ترتیب به نوع Boolean تبدیل می کنند
تصمیم بگیرید که چه کاری انجام دهید، اما بسته به اپراتور و نتیجه آن
تبدیل، آنها یا مقدار سمت چپ اصلی یا مقدار سمت راست را برمی گردانند.
|| به عنوان مثال، اپراتور زمانی که بتواند مقدار را به سمت چپ خود برگرداند
به true تبدیل می شود و در غیر این صورت مقدار سمت راست خود را برمی گرداند. این دارد
اثر مورد انتظار زمانی که مقادیر Boolean هستند و کاری مشابه انجام می دهند
برای مقادیر انواع دیگر
console.log(null || “کاربر”)
// → کاربر
console.log(“Agnes” || “کاربر”)
قوانین ارسال دیدگاه در سایت