কম্পিউটার টিউটোরিয়াল

If ([] == false) is true, why does ([] || true) result in []? - JavaScript


যদি আমরা সমস্যা বিবরণটি ঘনিষ্ঠভাবে দেখি, ([] == false) এবং ([] || true) এর মধ্যে পার্থক্য হল −

প্রথম কেসে, আমরা শিথিল শর্তাবলী যাচাই করছি, যা টাইপ কোэрশন (type coercion) অনুমতি দেয়।

দ্বিতীয় কেসে, আমরা [] কে তার সংশ্লিষ্ট বুলিয়ান (truthy বা falsy) এ ইভ্যালুয়েট করছি যা বুলিয়ান() ফাংশন ব্যবহার করে টাইপ কোэрশনের বদলে।

এখন উভয় কেসে পেছনে যা রূপান্তর ঘটে তা দেখা যাক।

কেস ১ − ([] == false)

MDN ডক্স অনুযায়ি, যদি দুটি ডাটা টাইপ x এবং y কে ढीਲা সমতা অপারেশন (==) দিয়ে তুলনা করা হয়, তবে,

বুলিয়ান মানটি Number() ফাংশন দিয়ে সংখ্যায় রূপান্তরিত হবে −

তাহলে শর্তটি হয় −

[] == 0 // Number(false) = 0

তারপর অবজেক্ট টাইপের ভ্যারিয়েবলটি প্রিমিটিভ মান এ রূপান্তরিত হবে −

"" == 0 

এবং শেষে খালি স্ট্রিংটি সংখ্যায় রূপান্তরিত হবে −

0 == 0

উপরের শর্তটি 最終ভাবে true রিটার্ন করে।

কেস ২ − ([] || true)

এই কেসে []-এর truthy/falsy মান চেক করা হবে Boolean() ফাংশন দিয়ে রূপান্তর করে। এবং,

Boolean([]) = true 

অতএব, truthy মান [] রিটার্ন করা হয়।


  1. জাভাস্ক্রিপ্ট multiline প্রোপার্টি

  2. জাভাস্ক্রিপ্ট match() মেথড

  3. জাভাস্ক্রিপ্টে preventDefault() vs return false

  4. জাভাস্ক্রিপ্টে ফলসি ভ্যালু চিহ্নিত করা