The javascript: post #13 — TG.ME

abol( [] == [] )// false ( 0 == [] )// true console.log([]==![]) // true چرا فالسه؟ چرا تروعه ضد نقضیه
اول از همه بگم که

[] یا {} یک مقدار falsy نیست این خط کد زیر وارد بلوک ایف میشه

    let arr = [];
if (arr) {
alert('true');
}


ولی اگ همین شرطو با == یا arr.length چک کنی نتیجه false میشه و وارد بلوک ایف نمیشه

مقایسه اولی جفتشون ارایه هستن و توی جاوا اسکریپت شی حساب میشن و مقدار اصلی(Primitive ) نیستن و رفرنس تایپ حساب میشن رفرنسشون یکی نیست بر اساس رفرنسشون مقایسه میشن (اطلاعات تکمیلی در آینده)

مقایسه دومی وقتی دوتا مقدار از نوع متقاوت رو با عملگر == برسی میکنی توسط این عملگر تبدیل میشن به نوع نامبر
اینجا یه مقدار اصلی داریم و یک شی ک اینجا شی تبدیل میشه به مقدار اصلی و بعد به رشته خالی تبدیل میشه و رشته خالی تبدیل میشه به 0
و 0== 0 ترو هستش

مقایسه سومی یکم گیج کننده به نظر میرسه
عملگر یگانه ! الویت بالاتری داره پس اول [] تبدیل میشه به یک مقدار بولی و false اش میکنه باز چون دو نوع متفاوت حساب میشن ارایه سمت چپ تبدیل به رشته خالی و 0 میشه و در نهایت نتیجه true هستش
🙏4👍2🔥2
July 22, 2024 1.7K 5