আমরা যদি সমস্যা বিবৃতিটি ঘনিষ্ঠভাবে দেখি, তাহলে ([] ==মিথ্যা) এবং ([] || সত্য) এর মধ্যে পার্থক্য হল নিম্নলিখিত −
প্রথম ক্ষেত্রে, আমরা ঢিলেঢালা শর্তসাপেক্ষ চেকিং ব্যবহার করছি, যাতে টাইপ জবরদস্তি করা যায়।
দ্বিতীয় ক্ষেত্রে, আমরা [] এর নিজ নিজ বুলিয়ান (সত্য বা মিথ্যা) মূল্যায়ন করছি যা হুকের নীচে টাইপ জবরদস্তির পরিবর্তে বুলিয়ান() ফাংশন ব্যবহার করে।
আসুন এখন উভয় ক্ষেত্রেই পর্দার আড়ালে ঘটে যাওয়া রূপান্তরগুলি উন্মোচন করি৷
৷কেস 1 − ([] ==মিথ্যা)
MDN ডক্স অনুসারে যদি দুটি ডাটা টাইপ বলে x এবং y আলগা সমতা অপারেশন ( ==) ব্যবহার করে তুলনা করা হয়, তাহলে,
Number() ফাংশন −
ব্যবহার করে বুলিয়ান মান একটি সংখ্যায় রূপান্তরিত হবেসুতরাং, শর্তটি এখন −
হয়ে যায়[] == 0// Number(false) = 0
তারপর যদি অবজেক্ট টাইপের ভেরিয়েবলটিকে আদিম মান −
-এ রূপান্তর করা হবে"" == 0
এবং সবশেষে খালি স্ট্রিংটি একটি সংখ্যা-
-এ রূপান্তরিত হবে0 == 0
উপরের শেষ পর্যন্ত সত্য ফিরে আসে
কেস 2 − ([] || সত্য)
এই ক্ষেত্রে ইনবিল্ট বুলিয়ান() ফাংশন ব্যবহার করে একটি বুলিয়ানে রূপান্তর করে []-এর সত্য/মিথ্যা মান পরীক্ষা করা হবে। এবং,
Boolean([]) = true
তাই, সত্যের মান [] বজায় রাখা হয়।