بی منطقی های جاواسکریپت

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

خب یه لیست خیلی طولانی از این موضوع هست به اسم wtf.js که میتونید توی این ریپوی گیتهاب ببینید
چند تاش خیلی جالب بود گفتم با هم ببینیم




۱. درست همان اشتباه است !

ببینید برعکس برعکس یه چیزی باید بشه خودش تا اینجا قبول ؟
خب توی برنامه نویسی ! یعنی برعکس و !! یعنی برعکس برعکس

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

!!&quotfalse&quot == !!&quottrue&quot // -> true
!!&quotfalse&quot === !!&quottrue&quot // -> true

دیگه حرفی نیست ...

۲. یک آرایه خالی مساوی برعکس یک آرایه خالیست

قبلی قبوله آقا
برعکس یه چیزی آیا میشه خودش ؟ ( یکی نیاد بگه مثلا کیک ، حروف رو نمیگم درست و اشتباه بودن و بولین رو میگم )
ولی توی جاواسکریپت میشه

[] == ![]; // -> true

عالی اصلا ( به رو خودتون نیارید عصبی شدم :/ )

۳. یک چیز مساوی خودش نیستتتت :///////

تست کنید
از javascript هاتون بخواهید براتون تست کنه آیا NaN مساوی NaN هست یا نه

NaN === NaN; // -> false

۴. موز

&quotb&quot + &quota&quot + +&quota&quot + &quota&quot // -> 'baNaNa'

فکر کنید دو تا مثبت NaN بده
همینقدر مسخره
یه نمونه دیگه :

&quotfoo&quot + +&quotbar&quot // -> 'fooNaN'

به قول معروف : wtfjs ?

۵. یک آرایه خالی درست نیست ولی درست است

!![]       // -> true
[] == true // -> false

ببینید یک ارایه خالی فالس میده

ولی برعکس برعکسش درسته
یا فالسه و مثل فالس برعکس برعکس درست میشه
یا درسته ولی توی حالت عادی نمایش داده نمیشه

۶. کوچیکترین عدد ممکن از صفر بزرگتر است

Number.MIN_VALUE > 0; // -> true

خب یکی توی استک اور فلو پرسیده اگر حوصله تون میکشه از این لینک بخونید
خلاصه بگم کوچیکترین عدد میشه 5e-324

۷. یکی از تابع ها بده !

parseInt(&quotf*ck&quot); // -> NaN
parseInt(&quotf*ck&quot, 16); // -> 15 

نکته که این مثال من نیست مثال wtfjs میباشد
دلیلش هم اینه توی هگزا دسیمال f میشه ۱۵

۸. ریاضیات با درست و اشتباه

اگر بدونید ترو میشه ۱ و فالس ۰
بیایید با این عددا ریاضی انجام بدیم

true + true; // -> 2
(true + true) * (true + true) - true; // -> 3

ما با درست و اشتباه ریاضی حل کردیم هورا

دلیلش :

Number(true); // -> 1

۹. آرایه خالی و هیچی شی هستند !

typeof []; // -> 'object'
typeof null; // -> 'object'
null instanceof Object; // false

خب null یه شیئه و ارایه خالی هم یه شئ ( OBJEC ) عه ، مشکل چیه ؟

کلا تایپآف یه سری قاط داره که خیلی از بی منطقی های جاواسکریپت توی typeof میباشد
لینک اکما اسکریپت درباره typeof : کلیک

۱۰. اعداد اعشاری

0.1 + 0.2; // -> 0.30000000000000004
0.1 + 0.2 === 0.3; // -> false

بله دیگر
مشکلات محاسبات ریاضی
توی خیلی از زبان ها البته این شکلی



حتما یوتیوب رو ساب کنید و اینستاگرام هم دنبال کنید که آموزشای باحالی تو راهن?

کد های آموزش هارو هم می تونید توی گیت هاب تمشک پیدا کنید

راستی اگه دیسکورد دارین حتما تو سرور دیسکورد هم جوین بشید که برنامه ها داریم!

اگه این پست رو دوست داشتین لایک، کامنت و دنبال کردن انتشارات یادتون نره?

© منابع : تمشک ، wtfjs