متن خبر

== چه تفاوتی با === در جاوا اسکریپت دارد؟ برابری دقیق در مقابل سست توضیح داده شد

== چه تفاوتی با === در جاوا اسکریپت دارد؟ برابری دقیق در مقابل سست توضیح داده شد

اخبار== چه تفاوتی با === در جاوا اسکریپت دارد؟ برابری دقیق در مقابل سست توضیح داده شد
شناسهٔ خبر: 266628 -




خبرکاو:

اگر در حال خواندن این وبلاگ هستید، احتمالاً جاوا اسکریپت را یاد می گیرید – و این عالی است.

دو برابر (==) و مساوی سه گانه (===) در جاوا اسکریپت اغلب باعث می شود مبتدی ها سر خود را خاردار کنند. این بدان معنا نیست که شما باید از جاوا اسکریپت بترسید، در واقع این اصطلاحات زمانی که جاوا اسکریپت را بدانید زیباتر می کند.

== و === در جاوا اسکریپت چیست؟

اکنون، یک چیزی که باید به خاطر داشته باشیم این است که هر دو == و === برای مقایسه و یافتن درجه یکسانی یا برابری بین چیزهایی که مقایسه می کنیم استفاده می شود.

هر دو == و === اگر برابری را پیدا کنند true و در غیر این صورت false را برمی گرداند. اما نکته ای وجود دارد: == و === از معیارهای مختلفی برای اندازه گیری درجه برابری استفاده کنید.

اشکال--2-

با این گفته، بیایید بفهمیم که چگونه == (دو برابر) با === (سه برابر) با استفاده از مثال های مختلف متفاوت است.

چگونه Double Equals (==) کار می کند - با مثال

دو برابر (==) اغلب به عنوان "برابری سست" نامیده می شود زیرا قبل از انجام هر مقایسه ای اجباری از نوع اعمال می کند.

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

بیایید با کمک یک مثال درک کنیم.

 const a = 100; const b = '100'; console.log(a == b) // true

در مثال بالا دو متغیر a و b داریم. نوع متغیر a number و نوع متغیر b string است.

حال، وقتی دو متغیر را با استفاده از دو برابر ( == ) مقایسه می کنیم، به عنوان خروجی true می گیریم.

این به این دلیل است که نوع متغیر a قبل از مقایسه به string تبدیل می شود.

پس از مقایسه، مقدار در هر دو متغیر تحلیل می شود. اگر یکسان باشد، true می‌شویم و در غیر این صورت false می‌شویم. در مورد ما، true است.

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

قوانین برای نوع اجبار

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

 const a = true; const b = 'true'; console.log(a == b)

حالا به نظر شما خروجی چه خواهد بود؟ اگر پاسخ شما true بود، متاسفانه درست نیست. اما اگر متوجه شدید که false است، تبریک می‌گوییم.

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

پس ، در اینجا قوانین مربوط به نوع اجبار در جاوا اسکریپت آمده است:

اگر هر یک از عملوندها یک string باشد، عملوند دیگر به یک string تبدیل می شود.

اگر هر یک از آنها یک number باشد، عملوند دیگر به number تبدیل می شود.

اگر هر یک از عملوندها یک boolean باشد، به number تبدیل می شود ( true تبدیل به 1 و false می شود 0 ).

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

اگر یکی از عملوندها null یا undefined باشد، دیگری نیز باید null یا undefined باشد تا true باشد. در غیر این صورت false برمی گردد.

حالا از نقطه سه متوجه شدید که چرا پاسخ ما در مثال بالا false بود.

به این دلیل است که مقدار متغیر a ( true ) قبل از مقایسه به عدد تبدیل می شود. پس پس از مقایسه - جایی که ما اکنون 1 و 'true' را با هم مقایسه می کنیم - false می شود زیرا متغیرها حاوی مقادیر متفاوتی هستند.

چگونه سه برابر است (===) کار می کند - با مثال

تساوی سه گانه (===) که به آن «برابری دقیق» نیز گفته می شود، مشابه نحوه عملکرد دو برابر (==) عمل می کند، با یک تفاوت مهم: انواع عملوندها را قبل از مقایسه تبدیل نمی کند.

هنگام مقایسه متغیرها، ابتدا تحلیل می کند که آیا انواع متفاوت هستند یا خیر. اگر این کار را انجام دهند، false برمی گردد. اگر انواع مطابقت داشته باشند، مقدار را تحلیل می کند. اگر مقادیر یکسان باشند و عدد نباشند، true را برمی گرداند.

در نهایت، اگر هر دو عملوند اعداد باشند و NaN نباشند و مقدار یکسانی داشته باشند، مقدار true را برمی گرداند. در غیر این صورت، false .

بیایید این را با کمک مثال ها درک کنیم:

 const a = 100; const b = '100'; console.log(a === b);

ما همان مثال بالا را آورده ایم، اما به جای مقایسه با دو برابر (==) با مساوی سه گانه (===) مقایسه می کنیم.

پس ، ممکن است پاسخ را قبلا حدس زده باشید. آره، false ، چرا؟ زیرا نوع متغیر a عددی و نوع متغیر b رشته ای است.

در هنگام مقایسه، ابتدا تحلیل های سه برابری برای انواع عملوندها انجام می شود - و این انواع در این مثال متفاوت هستند. پس ، false برمی گردد.

بیایید به مثال دیگری نگاه کنیم:

 const a = true; const b = 1; console.log(a === b);

در مثال بالا دو متغیر a و b داریم. نوع متغیر a بولی و نوع متغیر b عددی است.

پس ، اگر ما با استفاده از سه برابر (===) مقایسه کنیم، مقدار false را برمی‌گرداند – زیرا باز هم، متغیرها انواع مختلفی دارند.

نتیجه

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

عملگر == یک مقایسه تساوی آزاد را انجام می دهد که در صورت لزوم، اجبار نوع را انجام می دهد تا مقایسه ممکن شود.

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

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

برچسب‌ها

ارسال نظر




تبليغات ايهنا تبليغات ايهنا

تمامی حقوق مادی و معنوی این سایت متعلق به خبرکاو است و استفاده از مطالب با ذکر منبع بلامانع است