লাইন সম্পর্কিত:
if (arr == false) console.log("It's false!");
সম্ভবত এগুলি সাহায্য করবে:
console.log(0 == false) // true
console.log([] == 0) // true
console.log([] == "") // true
আমার বিশ্বাস যা ঘটছে তা হ'ল বুলিয়ান একটি বস্তুর (বাম দিকে) তুলনা false
করার 0
জন্য জোর করে । অবজেক্টটি একটি স্ট্রিংয়ের সাথে জোর করা হয় (খালি স্ট্রিং)। তারপরে, খালি স্ট্রিংটি একটি সংখ্যাতে জোর করা হয়, পাশাপাশি শূন্য। এবং তাই চূড়ান্ত তুলনা হয় 0
== 0
, যা হয় true
।
সম্পাদনা করুন: ঠিক কীভাবে এটি কাজ করে সে সম্পর্কে বিশদের জন্য বিশিষ্টটির এই বিভাগটি দেখুন ।
নিয়ম # 1 থেকে এখানে কী হচ্ছে তা এখানে:
১. যদি টাইপ (এক্স) প্রকার (y) থেকে পৃথক হয় তবে 14 ধাপে যান।
পরবর্তী নিয়মটি প্রয়োগ হয় # 19:
19. যদি টাইপ (y) বুলিয়ান হয় তবে তুলনাটির ফলাফলটি x == টনবার (y) প্রদান করুন return
ফল ToNumber(false)
হয় 0
, তাই আমরা এখন আছে:
[] == 0
আবার, নিয়ম # 1 আমাদের # 14 ধাপে উঠতে বলেছে, তবে পরবর্তী পদক্ষেপ যা আসলে প্রয়োগ হয় তা হল # 21:
21. যদি টাইপ (এক্স) অবজেক্ট হয় এবং টাইপ (y) হয় স্ট্রিং বা সংখ্যা হয়, ToPrimitive (x) == y এর তুলনার ফলাফলটি ফিরিয়ে দিন।
এর ফলাফলটি ToPrimitive([])
খালি স্ট্রিং, সুতরাং আমাদের কাছে এখন:
"" == 0
আবার, নিয়ম # 1 আমাদের # 14 ধাপে উঠতে বলেছে, তবে পরবর্তী পদক্ষেপ যা আসলে প্রয়োগ হয় তা হল # 17:
17. যদি টাইপ (x) স্ট্রিং হয় এবং টাইপ (y) হয় নম্বর হয়, তবে টনবার (x) == y এর তুলনার ফলাফলটি ফিরিয়ে দিন।
ফল ToNumber("")
হল 0
, যা আমাদের সঙ্গে ছেড়ে:
0 == 0
এখন, উভয় মানেরই একই ধরণ রয়েছে, তাই পদক্ষেপগুলি # 1 থেকে # 7 অবধি অব্যাহত থাকে যা বলে:
X. x যদি y এর সমান সংখ্যার মান হয় তবে সত্য আসুন।
সুতরাং, আমরা ফিরে true
।
সংক্ষেপে:
ToNumber(ToPrimitive([])) == ToNumber(false)