রহস্যময়ী জাভাস্ক্রিপ্টঃ [] === 0 মিথ্যা(false) হলেও [] == 0 আবার সত্য(true) হয় কিভাবে?

আপনারা কখনো কখনো হয়তো এরকম জিনিস দেখেছেন যে [] === 0, false হচ্ছে, কিন্তু [] == 0 আবার true হচ্ছেঃ

[] === 0
// false

[] == 0
// true

এটার পেছনেও সেই জাভাস্ক্রিপ্ট এর দুইটাওয়ালা == ও তিনটাওয়ালা === ইকুয়ালেটি অপারেটরের কারসাজি কাজ করছে। আমরা গত পর্ব থেকে জানি যে এই দুইটাওয়ালা == ও তিনটাওয়ালা === অপারেটরের মধ্যে পার্থক্য আছে। তিনটাওয়ালা === ইকুয়ালিটি অপারেটর কড়াকড়িভাবে(Strictly) কম্পেয়ার করে কোনোরকম টাইপ কোয়ারশন বা কোন কিছু না করে, যেখানে দুইটায়ালা == ইকুয়ালিটি অপারেটর ইকমাস্ক্রিপ্ট এর স্পেক অনুযায়ী ক্ষেত্রেবিশেষে টাইপ কোয়ারশন ইউজ করে অপারেন্ডের টাইপ পরবর্তন করে সেটার তুলনা করে।

জাভাস্ক্রিপ্ট এ অ্যারেকে অবজেক্ট হিসেবে গণ্য করা হয়, আর আপনারা যদি এখানে ইকমাস্ক্রিপ্ট এর স্পেক দেখেন তাহলে দেখবেন অবজেক্ট থাকলে সেটার আচরণ কেমন হবে == অপারেটর ইউজ করার সময়। যদি অবজেক্ট এর সাথে কোন নাম্বার, স্ট্রিং বা BigInt অথবা Symbol থাকে তাহলে এখানে অবজেক্ট এর টাইপ পরিবর্তন হয়ে একটা প্রিমিটিভ ভ্যালুতে কনভার্টেড হয়ে যাবে। এখন ঠিক কোন টাইপে কনভার্ট হবে সেটা যার সাথে তুলনা করছেন সেটার উপর নির্ভর করবে। এখানে আমরা যেহেতু নাম্বারের সাথে তুলনা করছি, তাই অ্যারেটিকে নাম্বারে নেওয়া হবেঃ

Number([])
// 0

ঠিক এই কারণেই == অপারেটর ইউজ করে 0 এর সাথে খালি অ্যারে [] কে তুলনা করা সেটা সত্য true হয়েছেঃ

[] == 0
// true

0 == 0
// true

অন্যদিকে === অপারেটরটা যেহেতু স্ট্রিক্ট ইকুয়ালেটি চেকে ইউজ হয়, তাই সেক্ষেত্রে অবশ্যই একটা অ্যারে [], 0 এর সমান নয়, তাই মিথ্যা false দেখাচ্ছেঃ

[] === 0
// false

 

শেয়ার করুন

লেখাটি ভাল লাগলে সোশ্যাল মিডিয়ায় শেয়ার করুন। আপনার কলিগ, বন্ধু কিংবা প্রিয় কারও কাজে লাগতে পারে। জানেন তো, শেয়ারিং ইজ কেয়ারিং!

সাবস্ক্রিপশন সেন্টার

প্রতিদিন ওয়েবসাইটে আসা আপনার জন্য কষ্টকর হতে পারে। তাই যখনই আমি নতুন ব্লগ পোস্ট, সিরিজ, বই বা ভিডিও পাবলিশ করব,
তখনই তা আপনার ইমেইলে পেতে সাবস্ক্রাইব করুন। নো স্প্যামিং প্রমিজ!